1 信息收集
渗透测试中的信息收集是关键的初始阶段,其作用在于系统性地获取目标系统、网络或应用的详细信息,包括域名及子域名信息、目标网站系统、CMS指纹、目标网站IP 、开放的端口等
1.1 在Kali机中使用命令进行信息收集
命令的具体使用请参考另外一篇文章
网址:Kali机操作和信息收集相关命令
- ping命令
ping命令通常用来检测目标主机是否存活,或根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量
- nslookup命令
nslookup命令通常用来获取主机名或IP地址相关的信息
- dig命令
dig命令通常用来从DNS域名服务器查询主机地址信息,获取到详细的域名信息
- arp-scan命令
arp-scan使用 ARP 协议来发现本地网络上的 IP 主机并对其进行指纹识别
- whois
whois命令用来查询域名是否已经被注册,以及注册域名的详细信息
- nmap
nmap是一个十分常用的命令,通过向指定的主机发送数据包分析获得相关信息
- dirsearch
dirsearch命令一般用于扫描网站的敏感文件和目录从而找到突破口
1.2 通过信息收集网站获取信息
网站的具体使用语法请参考另外一篇文章
网址:信息收集网站和漏洞平台
- 天眼查
天眼查是一款专注于企业信息查询和商业调查的在线工具,提供全面的企业背景、股东信息、法律诉讼、财务状况等数据。它帮助用户了解企业的真实情况,进行信用评估和风险管理,为商业决策提供支持。通过天眼查,用户可以便捷地获取权威、详尽的企业信息,提升商业透明度
- FOFA
FOFA提供强大的搜索和过滤功能,用户可以轻松检索各种互联网资产,如服务器、网站、设备等,通过收集和分析数据,发现潜在的安全风险和漏洞
- 360网络空间测绘
360网络空间测绘提供全面的网络空间可视化和安全情报,为企业和安全研究人员提供强有力的支持,提升网络安全防护能力
1.3 使用工具收集信息
- Burp Suite
通过BurpSuite工具同样可以获取一些服务器的信息,如运行的Server类型及版本、PHP的版本信息等,针对不同的Server 可以利用不同的漏洞进行测试
详细使用教程可以参考我写的另外一篇文章:
网址:Burp Suite使用教程【入门】
- Goby
Goby是一款信息收集和漏洞扫描工具,广泛用于渗透测试和网络安全评估。它自动扫描网络设备、应用程序和服务,提供详细的资产信息和安全漏洞
官方地址:https://gobysec.net/
- Layer子域名挖掘机
Layer子域名挖掘机是一款用于发现和收集目标域名子域名的工具
下载地址:https://github.com/euphrat1ca/LayerDomainFinder
- whatWeb
whatWeb 是一种开源的网页指纹识别工具,通过分析网站的 HTTP 响应、HTML 代码和其他特征,whatWeb 能够识别网站所用的内容管理系统(CMS)、服务器软件、脚本语言、分析工具等信息
一般Kali机中自带,不需要额外下载
1.4 常用端口信息收集及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | FTP/tFTP 文件传输协议 | 允许匿名的上传、下载、爆破和嗅探操作,FTP和tFTP常因配置不当而易受攻击,未加密传输更是存在数据泄露风险 |
22 | SSH远程连接 | 爆破、SSH 隧道及内网代理转发、文件传输,强力破解弱口令可能导致服务器完全失陷 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令,未加密的Telnet连接易被中间人攻击捕获敏感信息 |
80/443 | 常见的Web服务端口 | Web 攻击、爆破、对应服务器版本漏洞,常见Web服务容易暴露在互联网,攻击者可以利用已知漏洞和配置不当进行入侵 |
139 | Samba服务 | 爆破、未授权访问、远程代码执行,通过Samba漏洞可以在网络中横向移动,提升攻击者权限 |
389 | LDAP目录访问协议 | 注入、允许匿名访问、弱口令,LDAP若配置不当,可导致信息泄露和进一步渗透 |
3389 | RDP远程桌面连接 | shift后门(需要Windows Server 2003 以下的系统)、爆破,RDP暴露在互联网易被爆破攻击利用 |
3306 | MySQL 数据库 | 注入、提权、爆破,通过SQL注入漏洞,攻击者可以获取数据库控制权和提升权限 |
1433 | MSSQL 数据库 | 注入、提权、SA 弱口令、爆破,弱口令和注入漏洞易被利用进行数据库控制和提权 |
5432 | Postgre SQL 数据库 | 爆破、注入、弱口令,弱口令和注入漏洞可以被利用进行数据库访问和控制 |
27017/27018 | MongoDB | 爆破、未授权访问,未加固的MongoDB实例易被攻击者利用进行数据窃取 |
25 | SMTP 邮件服务 | 邮件伪造,未加固的SMTP服务易被利用进行邮件伪造和垃圾邮件发送 |
110 | POP3 协议 | 爆破、嗅探,未加密的POP3连接易被中间人攻击捕获邮件内容 |
53 | DNS 域名系统 | 允许区域传送、DNS 劫持、缓存投毒、欺骗,配置不当的DNS服务易被利用进行域名劫持和投毒攻击 |
161 | SNMP 协议 | 爆破、搜集目标内网信息,配置不当的SNMP服务易被利用进行网络信息搜集 |
2 漏洞探测
在获取了充足的信息之后就可以利用这些信息去探测目标是否包含漏洞,这一部分将主要讲解常见的漏洞和常见的漏洞探测工具,如果想了解更多可以查看另外一篇文章:
网址:OWASP 十大常见漏洞
- 常见漏洞
漏洞名称 | 简要介绍 |
---|---|
SQL注入 | 通过向SQL查询中插入恶意代码来操纵数据库操作 |
XSS跨站脚本 | 在网页中插入恶意脚本代码以窃取用户数据或操纵网页内容 |
CSRF跨站请求伪造 | 利用用户的身份信息,向受信任网站发起未经授权的请求 |
XXE漏洞 | 通过XML外部实体注入攻击服务器,可能导致敏感数据泄露 |
SSRF服务端请求伪造 | 攻击者通过服务端向内部或外部网络发送恶意请求 |
文件包含漏洞 | 通过包含服务器上的任意文件来执行恶意代码 |
文件上传漏洞 | 允许攻击者上传恶意文件并在服务器上执行 |
文件解析漏洞 | 在文件解析过程中触发的安全漏洞,可能导致代码执行或信息泄露 |
远程代码执行漏洞 | 允许攻击者在目标服务器上执行任意代码 |
CORS跨域资源共享漏洞 | 由于配置不当,允许恶意网站访问受限资源 |
越权访问漏洞 | 用户能够访问其权限之外的数据或功能 |
目录浏览漏洞 | 允许攻击者浏览和读取服务器上的任意文件 |
Struts2漏洞 | Apache Struts2框架中的漏洞,可导致远程代码执行 |
JAVA反序列化漏洞 | 在反序列化过程中执行恶意代码,通常用于远程代码执行攻击 |
- 常见漏洞探测工具
AWVS:
AWVS(Acunetix Web Vulnerability Scanner)是一款专业的网络应用安全扫描工具,用于检测和评估网站的安全漏洞。它能够自动扫描网站和Web应用,识别常见的安全漏洞如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)、文件包含漏洞等
详细使用教程:AWVS安装和使用教程
Nessus:
Nessus 是由 Tenable 开发的漏洞扫描工具,用于检测网络设备和系统中的安全漏洞和配置错误。它提供详细的扫描报告和修复建议,帮助组织修补安全威胁。Nessus 支持多种操作系统和应用,常用于企业安全评估和合规性审计
详细使用教程:Nessus安装和使用教程
3 漏洞利用
常见的漏洞利用工具有 Metasploit 、 sqlmap 、 Beef-XSS 等工具,具体的使用教程请查看另外一篇文章:
链接:SQLmap和Beef工具使用教程
- SQLmap
SQLmap 是一个开源的自动化SQL注入工具,能够自动检测目标URL的SQL注入漏洞,并通过注入SQL语句获取数据库信息,如数据库结构、表数据、用户凭据等
- Beef-XSS
Beef-XSS是一款开源的浏览器漏洞利用框架,专门用于Web浏览器的安全测试。它通过钓鱼链接或恶意代码将目标浏览器挂钩到框架中,允许测试人员执行各种攻击脚本,分析和利用浏览器及其插件中的安全漏洞,从而帮助评估和提升Web应用的安全性
- Metasploit
Metasploit是一个开源的渗透测试框架,被广泛用于计算机安全领域。它提供了一个强大的平台,用于开发、测试和利用安全漏洞。Metasploit包含大量的漏洞利用模块、后渗透模块和辅助工具,使安全研究人员和渗透测试员能够模拟真实的攻击场景,评估系统和网络的安全性
具体的使用教程可以查看另外一篇文章:metasploit使用和反弹shell
- 文件上传漏洞
文件上传漏洞是一种Web应用漏洞,允许攻击者上传恶意文件到服务器。利用这种漏洞,攻击者可以上传包含恶意代码的脚本文件,如木马或后门程序,从而在服务器上执行任意命令、篡改数据或获取敏感信息
详细教程可以看另一位大神写的文章:Web安全-文件上传漏洞与WAF绕过
- 一句话木马
一句话木马是一种通过在受害者的Web应用中插入一行恶意代码来实现远程控制的木马程序,这种木马通常嵌入到网站的脚本文件或数据库中,允许攻击者在不被察觉的情况下执行任意命令、上传文件或进一步扩展攻击
详细教程可以看另一位大神写的文章:Web安全-一句话木马
4 内网转发
内网转发是一种网络技术,通过一台已受控的内网机器,将外部流量转发到内网中的其他目标设备。通常用于绕过防火墙或其他安全措施,使外部攻击者能够访问内部网络资源
详细使用可以查看另外一篇文章:内网转发教程
- 反弹shell
反弹Shell用于通过外部服务器与受害者机器建立连接,控制受害者的计算机
- 端口转发
端口转发可以将一个网络端口上的流量重定向到另一个端口或IP地址。它常用于绕过防火墙限制、保护内网设备或为外部用户提供内部网络服务的访问
- SSH反向代理
SSH 反向代理通过 SSH 隧道将内网服务暴露给外部访问
5 横向移动
横向移动是攻击者在获得初始访问权限后在内网中扩展其控制范围的关键步骤
- 远程桌面协议
RDP是一种用于连接和控制远程计算机的协议。如果攻击者获得了合法的凭据,可以通过RDP访问和控制其他主机
方法:
使用合法的用户名和密码登录目标主机
配置目标主机以允许RDP连接(如果尚未启用)
- Windows管理工具(WMIC)
WMIC是一种用于管理Windows系统的命令行工具。攻击者可以使用WMIC在远程主机上执行命令
方法:
使用WMIC工具远程执行命令,如:wmic /node:<target_ip> process call create “cmd.exe /c ”
- 远程服务(PsExec)
PsExec是Sysinternals工具套件的一部分,用于在远程主机上执行命令。攻击者可以利用PsExec进行横向移动
方法:
使用PsExec在远程主机上执行命令,如:psexec \<target_ip> -u -p cmd.exe
- Windows远程管理(WinRM)
WinRM是一种基于HTTP/HTTPS的远程管理协议。攻击者可以使用WinRM远程执行命令
方法:
使用PowerShell或其他工具通过WinRM执行远程命令,如:Invoke-Command -ComputerName <target_ip> -ScriptBlock { }
- 共享文件夹(SMB协议)
攻击者可以利用Windows的共享文件夹通过SMB协议在网络中移动和传播
方法:
使用SMB协议在目标主机上访问和执行文件
复制恶意文件到共享文件夹并远程执行
- 实战演练工具
Metasploit: 渗透测试框架,提供各种横向移动模块和后渗透模块
使用Metasploit模块如psexec或wmic_exec进行远程命令执行
Cobalt Strike: 高级威胁模拟工具,支持各种横向移动技术
使用Cobalt Strike的beacon模块进行远程命令执行和凭据窃取
Empire: 基于PowerShell的后渗透框架,支持多种横向移动技术
使用Empire的模块如invoke_wmi或invoke_psexec进行横向移动
6 权限维持
权限维持旨在确保攻击者在初始入侵成功后能够长期保留对目标系统的访问,包括安装后门程序、创建隐藏用户账户、修改系统配置文件或注册表、利用合法软件中的漏洞,以及定期更新和隐藏恶意软件。这些方法使得攻击者可以在系统中保持隐蔽的存在,从而进一步执行数据窃取、间谍活动或其他恶意操作
6.1 Windows 权限维持的方法
详细使用请参考参考文章:内网渗透-windows权限维持的方法
- 影子账户:创建隐藏管理员用户并通过修改注册表隐藏
- 粘滞键后门:替换 sethc.exe 文件以启用未登录情况下的 cmd 窗口
- Logon Scripts 后门:利用登录脚本在用户登录时运行恶意程序
- 注册表自启动后门:在注册表中添加启动项以便系统启动时运行后门程序
- 屏幕保护程序后门:将屏幕保护程序替换为恶意程序以在系统闲置时运行
- 计划任务后门:使用 schtasks 命令设置定时任务自动运行后门程序
- 服务自启动后门:将恶意程序注册为服务并设置自动启动
- 黄金票据:利用 krbtgt 的 NTLM Hash 伪造 TGT,实现持久化访问
- 白银票据:伪造 ST 以访问特定服务,不经过 KDC 验证
- BITSAdmin:利用后台智能传送服务下载并执行恶意程序
- CLR 劫持:修改注册表以在执行 .NET 程序时先运行恶意 DLL
6.2 Linux 权限维持方法
详细使用请参考文章:渗透测试基础- - -linux权限维持应急
- 隐藏文件:创建隐藏文件,命名以 “.” 开头(例如
.test.txt
),使用ls -al
查看 - 隐藏文件时间戳:使用
touch -r
或touch -t
修改文件时间戳 - 隐藏权限:用
chattr +i
锁定文件,防止删除或修改;使用lsattr
查看属性,chattr -i
解锁 - 隐藏历史操作命令:
- 技巧一:使用
[space]set +o history
临时关闭历史记录 - 技巧二:用
history -d [num]
删除指定命令,或sed -i '150,$d' .bash_history
删除部分历史记录
- 技巧一:使用
- 进程隐藏:使用
libprocesshider
通过LD_PRELOAD
劫持系统函数,使进程不可见
7 痕迹删除
详细使用请参考文章:内网渗透-Windows&Linux痕迹清除
7.1 Windows 痕迹清除
-
查看路径:
- 事件查看器 -> Windows 日志
- Win+R,输入
eventvwr.msc
- 保存路径:
C:\Windows\System32\winevt\Logs
-
清理方法:
- 使用
wevtutil
命令查看和清理日志:wevtutil qe Security /f:text /rd:true /c:10 # 获取最近十条日志 wevtutil qe Security /f:text /c:10 # 获取前十条日志 wevtutil epl Security 1.evtx # 导出所有日志 wevtutil cl Security # 清除 Security 日志 wevtutil cl System # 清除 System 日志 wevtutil cl Application # 清除 Application 日志 wevtutil cl "Windows PowerShell" # 清除 PowerShell 日志
- 使用
-
meterpreter 清理日志:
- 删除所有渗透过程中使用的工具。
- 删除添加的账号:
net user username /del
- 清除应用程序、系统、安全日志:
clearev
- 停止日志记录:使用
Invoke-Phant0m
脚本
7.2 Linux 痕迹清除
-
SSH 远程登录日志:
- 成功登录/登出:
last /var/log/wtmp
- 登录失败尝试:
lastb /var/log/btmp
- 最近登录记录:
lastlog /var/log/lastlog
- 当前登录用户信息:
w, who /var/log/utmp
- 成功登录/登出:
-
Web 日志:
-
访问日志路径:
/var/log/httpd/access.log
/var/log/nginx/access.log
/var/log/apache2/access.log
-
清理方法:
grep -v "shell.php" /var/log/nginx/access.log > /tmp/a.log && cat /tmp/a.log > /var/log/nginx/access.log sed -i -e "/dvwa/d" ./access.log # 删除包含 "dvwa" 的日志 sed -i -e "/192.168.231.147/d" ./access.log # 删除与特定 IP 相关的日志
-
-
定时任务日志:
- 路径:
/var/log/cron
:系统定时任务相关日志/var/log/secure
:记录验证和授权相关的信息
- 路径:
-
操作历史记录:
- 查看和清除历史记录:
history -w && history -c && > .bash_history # 清空所有历史记录 history -d 111 # 删除指定行的历史记录 sed -i "100,$d" .bash_history # 删除100行以后的历史记录
- 开启无痕模式:
set +o history # 禁用命令历史记录 set -o history # 恢复命令历史记录
- 查看和清除历史记录: