怎么做渗透
去年秋天,做渗透我帮一个做外贸的做渗透朋友查他的企业邮箱。他收到一封"客户"发来的做渗透合同附件,点开之后什么都没发生。做渗透三天后,做渗透他公司财务的做渗透电脑开始向境外IP传输数据。那封邮件里的做渗透PDF,嵌了一个带宏的做渗透Word文档,宏代码在后台静默下载了一个远控木马。做渗透这就是做渗透一次典型的渗透——攻击者没用什么高深技术,只是做渗透利用了"人会好奇"这件事。
渗透测试的做渗透本质,是做渗透模拟攻击者的思维方式去找到系统里最薄弱的那个环节。这个环节往往不是做渗透防火墙,不是做渗透加密算法,而是一个刚入职的实习生,或者一台三年没更新过补丁的打印机服务器。
信息收集:比你想的更"土"
很多人以为渗透的第一步是打开Kali Linux敲命令。实际上,第一步通常是打开浏览器,去搜目标公司的招聘信息。招聘JD里会写"熟悉Nginx、Redis、Kubernetes",这说明他们用了这些技术栈。再去LinkedIn上看员工动态,有人晒工牌照片,工牌上有内网系统的登录界面截图。有人发朋友圈说"加班到凌晨改Jenkins配置",好,CI/CD平台是Jenkins。
我习惯用一条命令做子域名枚举:subfinder -d target.com -o subs.txt。然后拿结果去跑httpx,筛出存活的服务。有一次扫出来一个test-admin.target.com,打开一看是后台登录页,默认口令admin/admin直接进去了。那个系统里存着两万多条客户记录。整个过程没用到任何漏洞利用工具。
找到入口之后
假设你拿到了一个Web应用的登录框。别急着上SQL注入。先试试弱口令,试试admin' or 1=1--,试试注册一个账号看看有没有越权。我见过一个系统,普通用户登录后把URL里的user_id=1024改成user_id=1025,就能看到别人的订单。这叫水平越权,逻辑漏洞,扫描器扫不出来。
如果Web层进不去,就看看暴露在公网的其他服务。Redis未授权访问、MongoDB未授权、Docker API未授权——这些在Shodan上一抓一大把。连上Redis之后,config set dir /root/.ssh/,config set dbfilename authorized_keys,set x "\n\nssh-rsa AAAA...",save。然后直接SSH连上去。这套操作五分钟能搞定,前提是目标没做任何访问控制。
横向移动与权限维持
拿到一台机器之后,别急着扫内网。先看这台机器上有什么——cat /etc/hosts,arp -a,netstat -antp。浏览器保存的密码、SSH私钥、数据库配置文件、.git目录里的历史记录。这些东西比漏洞值钱。
横向移动的经典手段是抓密码哈希。Windows上用Mimikatz,Linux上读/etc/shadow。拿到哈希之后跑hashcat,弱密码几秒钟就出来了。很多内网机器用的是同一个本地管理员密码,抓到一个就等于抓到一片。
权限维持要做得隐蔽。加一个计划任务,或者写一个systemd服务,名字伪装成systemd-update之类的。别用明显的后门文件,比如backdoor.php,那是给自己找麻烦。
清理痕迹
渗透测试和真实攻击的区别就在这里。授权测试做完之后要写报告,要清理自己上传的工具,要恢复修改过的配置。日志该删的删,但别全删——全删了运维会起疑心。留几条正常的访问记录,把关键的几条抹掉就行。
最后说一句。渗透测试的合法性完全取决于授权。没有书面授权书,你做的每一件事都可能构成犯罪。技术本身没有对错,用在哪里才是问题。