msf中的情报搜集
被动的信息搜集
使用被动的、间接的信息搜索技巧,可以在目标不察觉的情况下挖掘目标的相关信息。
- 公开渠道情报搜集
- 对公开的和已知的信息进行检索筛选,获取到目标的情报集合,一系列的工具可以让被动信息搜集更加的方便,包括Yeti和Whois等方法。
- 注意:测试中的目标主要是一个非公开的网站和192.168.2.158 是本地搭建的一个测试系统环境
Whois查询
msf > whois baidu.com
- Whois查询后,会出现诸如以下的内容信息
Netcraft网站
Netcraft是一个Web页面工具,它可以发现某个网站的具体服务器IP地址和其他信息
从挖掘到的数据信息,我们得知目标的IP地址为:104.193.88.77;如此我们就可以进一步的使用Whois查询该IP地址的信息。【如下图】
- 从上述的搜集信息中可以看出了该网站的注册结构、地理位置等信息。
nslookup命令
nslookup命令可以获得服务器的附加信息,
主动的信息搜集
Nmap端口扫描
确定目标的IP范围后,就可以启动Nmap对目标的IP端口开放情况进行扫描,得知对方的开放端口有哪些。
Nmap是目前最流行的端口扫描工具,Nmap的扫描结果可以输出在后端数据库中供后续使用。
root > nmap -sS -Pn [IP]
root > nmap -sS -Pn -A [IP]
Metasploit与数据库连接使用
- 启动PostgreSQL数据库
apt-get install postgresql # 安装数据库
service postgresql start # 启动数据库
apt-get install metasploit-framework #安装msf
msf控制数据库
msf > msfdb init #初始化数据库
登陆PostgreSQL数据库
msf > switch user[/su] postgres #登陆数据库
- 连接数据库/数据表
msf > db_connect postgres:[user]@[IP]/[库名]
- 确认数据库和表的MSF之间的连接
msf > db_status #确认连接状态
- MSF-help中的数据库操作方法
Nmap扫描结果写入Metasploit的数据库中
- 执行Nmap并保存为.xml文件
root > nmap -sS -Pn -A -oX [文件名] [目标IP]
- 打开DB并确认连接、导入XML文件到数据库中
msf > db_status #确认连接
msf > db_import [文件名] #向数据库中导入文件
msf > db_hosts -c address #显示库中的所有主机address列
高级的Nmap扫描技巧:TCP空闲扫描
TCP空闲扫描相当于网络上”冒充“另一台IP主机,对目标进行更加”秘密“的扫描。我们需要在网络上定位一台使用递增IP帧标识(IP ID:用于跟踪IP包的次序的一种技术方法)机制的空闲主机(空闲主机指主机在一段特定的时间内不想网络发送数据包)
MSF中的scanner/ip/ipidseq模块,来寻找满足TCP空闲扫描要求的空闲主机
- 执行扫描任务
msf auxiliary(ipidseq) > set RHOSTS 192.168.2.0/24 #[IP]
msf auxiliary(ipidseq) > set THREAD 50 #[线程]
msf auxiliary(ipidseq) > run #执行
- Nmap-TCP空闲扫描
msf auxiliary(ipidseq) > nmap -PN -sI [空闲主机的IP] [目标主机的IP]
使用空闲扫描,本机的IP地址不会向目标主机发送任何的数据包,但是空闲扫描方法就是这样利用被的主机IP访问,本机获得目标IP主机上开放的端口信息。
在MSF终端运行Nmap
msf > db_connect postgres:[email protected]/msfbook
成连接数据库后,在msf中的nmap扫描结果都会被数据库所记录在表中;之后在msf中nmap想被存进库中,则可以使用”db_nmap“命令进行nmap扫描。
msf > db_nmap -sS -A [目标ip]
- 查看数据库中的结果
msf > db_services
Metasploit进行端口扫描
举例:假设攻陷一个位于防火墙之后使用网络地址转换NAT协议的主机,这台主机没有办法从Internet中获得连接的私有IP地址,只有内网的地址;如果想要使用MSF对位于NAT之后的主机进行攻击,那么就需利用已被攻陷的主机作为跳板,将流量传送到网络内部的主机上。使用msf内建的端口扫描工具:
msf > search portscan
使用msf的SYN端口扫描器对单个主机进行一次简单的扫描
msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS [目标主机IP]
msf auxiliary(syn) > set THREADS [线程数<=128]
msf auxiliary(syn) > run # 执行
针对性的扫描
服务器消息块协议扫描
Metasploit可以利用它的smb_version模块来遍历一个网络,并获取系统的版本号。
msf > use scanner/smb/smb_version
msf auxiliary(smb_version) > show options
msf auxiliary(smb_version) > set RHOSTS 192.168.2.158
msf auxiliary(smb_version) > run
搜索配置不当的SQL Server
配置不当的SQL Server通常是一个进入目标系统的第一个后门;安装后默认是在监听TCP-1433或使用动态端口,如果是随机的端口号,只需要简单的对UDP端口1433进行查询,便可以获得随机的TCP端口号。(msf中的mssqp_ping模块就是用来查询随机tcp端口的)
msf > use scanner/mssql/mssql_ping
msf auxiliary(mssql_ping) > show options
msf auxiliary(mssql_ping) > set RHOSTS [IP]
msf auxiliary(mssql_ping) > set THREADS [线程]
msf auxiliary(mssql_ping) > run
SSH服务[器]扫描
如果相对一些主机运行着SSH服务扫描发现,对版本号进行识别。SSH是一种非常安全的协议,但任何协议都是必有漏洞的。msf的ssh_version模块可以来识别目标上运行的SSH版本。
msf > use scanner/ssh/ssh_version
msf auxiliary(ssh_version) > set RHOSTS [IP]
msf auxiliary(ssh_version) > set THREADS [线程]
msf auxiliary(ssh_version) > run
FTP扫描
msf > use scanner/ftp/ftp_version
msf auxiliary(ftp_version) > show options
msf auxiliary(ftp_version) > set RHOSTS [ip]
msf auxiliary(ftp_version) > set THREADS [线程]
msf auxiliary(ftp_version) > run
简单网络管理协议扫描
简单网络管理协议SNMP,用来报告带宽利用率、冲突率以及其他信息。
SNMP是渗透测试者的金矿,可访问的SNMP服务器能够泄露关于特定系统的更多信息,甚至会导致设备被远程攻陷。(得到具有读写权限的Cisco路由器的SNMP团体字符串,便可以下载整个路由器的配置,对其进行修改并回传到路由器中)
MSF中snmp_enum模块,是为了SNMP扫描专门设计的:
msf > use scanner/snmp/snmp_enum
msf auxiliary(snmp_enum) > show options
msf auxiliary(snmp_enum) > set RHOSTS [IP]
msf auxiliary(snmp_enum) > set THREADS [线程]
msf auxiliary(snmp_enum) > run
猜解:
msf中的snmp_login模块,可以尝试对一个IP或一段IP使用字典来猜解SNMP团体字符串。
互联网中存在大量的不变更出厂设置就投入生产的设备。
自编扫描器
在MSF中拥有自定义扫描器的功能,自定义的扫描器可以使用msf框架中的全部类和方法,内建了代理服务器、安全套接字层SSL支持、报告生成以及线程设置等。
msf框架软件的扫描器模块包括各种mixin(混入类),如用作TCP、SMB的mixin,以及集成在MSF中的辅助扫描mixin;Mixin预定义的函数和调用的代码模块。