3-情报搜集

紧接着前期的交互工作进行,渗透测试流程中的第二个步骤。

目的:获取渗透测试的准确信息,以了解目标组织的运作方式,确定最佳的进攻路线

尽可能详细地对渗透测试工作的细节进行记录。

一、被动信息收集
在不接触到目标系统的情况下挖掘目标信息。

公开渠道情报OSINT是一类对公开和已知信息来检索和筛选就可以获取到的目标情报集合。

1、whois查询:
寻找secmaniac.net的域名服务器。

msf>whois secmaniac.net

结果发现,DNS服务器由DOMAINCONTROL.COM提供,不归属与secmaniac.net所有。不在公司内部,所以不能作为攻击点。

2、Netcraft:
网页界面的工具,发现承载某个特定网站的服务器IP地址。
http://www.netcraft.com/

3、NSLookup
获取关于服务器的附加信息。

root@bt:~#   nslookup
set type=mx
>secmaniac.net

二、主动信息搜索:
与目标系统直接交互。
Notice:
在主动信息搜索中要避免被入侵检测系统IDS和入侵防御系统IPS发现。

1、使用Nmap进行端口扫描
获得了目标的IP范围后,使用端口扫描获取目标开放的端口。
过程实际是:逐个对远程主机的端口发起连接,从而确定哪些端口是开放的。
Nmap的输出结果可以保存在后端数据库中以备后续使用。

选项:

  • -sS 使用它来执行一次隐秘的TCP扫描,以确定某个特定的TCP端口是否开放
  • -Pn 使用nmap时不用ping命令预先判断主机是否存活,默认所有主机都是存活状态;使用于Internet上的渗透测试
  • -A 尝试进行深入的服务枚举和旗标获取,能够提供更多的目标主机的细节信息
root@bt:~# nmap -Pn -sS -A 172.12.32.131

这里写图片描述

2、在Metasploit中使用数据库
Metasploit支持MySQL、PostgreSQL(默认)和SQLite3数据库。

首先在Backtrack中使用init.d脚本启动数据库子系统

root@bt:~# /etc/init.d/postgresql-8.3 start

连接到数据库需要用户名、口令、运行数据库系统的主机以及想要使用的数据库名

msf>db_connect postgre:toor@127.0.0.1/msfbook

第一次连接到msfbook数据库会看到很多冗长的输出;
不是第一次连接,则直接回返回到MSF终端提示符,等待下一步命令。

db_status命令来确认数据连接是否正确。

msf> db_status
[*]postgresql connected to msfbook

(1)、将nmap输出的结果导入Metasploit
Q如何将一个Nmap生成的基本XML报告文件(通过nmap的-oX选项生成)导入到Metasploit?

step1:对目标进行-oX选项扫描,生成Subnet1.xml文件:

nmap -Pn -sS -A -oX Subnet1 192.168.1.0/24

step2:生成xml文件后,使用db_import命令将文件导入到数据库。
step3:使用db_hosts命令,核实导入结果。显示数据库中所有已保存的主机信息。

msf>db_connect postgre:toor@127.0.0.1/msf3
msf>db_import Subnet1.xml
msf>db_hosts -C address

(2)、高级Nmap扫描技巧:TCP空闲扫描
作用:能够冒充网络上另一台主机的IP地址,对目标进行更为隐秘的扫描。
前期准备:在网络上定位一台使用递增IP帧标识机制的空闲主机;这样的主机的IP帧标识是可以被预测的。

step1:使用Metasploit中的scanner/ip/ipidseq模块,来寻找能够满足TCP空闲扫描要求的空闲主机。

msf>use auxiliary/scanner/ip/ipidsqe
msf auxiliary(ipidseq)>show options

step2:设置参数并执行扫描模块

msf auxiliary(ipidseq)>set RHOST 192.168.1.0/24
msf auxiliary(ipidseq)>set THREADS 50
msf auxiliary(ipidseq)>run

step3:分析扫描结果,在nmap中使用-sI选项指定 获取的空闲主机(192.168.1.109) 对目标主机(192.168.1.155)的扫描。

msf auxiliary(ipidseq)>nmap -Pn -sI 192.168.1.109 192.168.1.155

至此,完成了空闲扫描,不使用自身IP地址向目标主机发送任何数据包就能获取目标主机上的开发端口信息。

(3)、在MSF终端运行Nmap

step1:连接到msfbook数据库

msf>db_connect postgres:toor@127.0.0.1/msf3

step2:成功连接到数据库后在MSF终端运行nmap,并将结果存储在数据库

msf>db_nmap -sS -A 172.16.32.131

step3:查看数据库中关于运行服务的扫描结果

msf>db_services

3、使用Metasploit进行端口扫描
在辅助模块中包含的内建的端口扫描器。

跳板攻击:使用网络内部已攻陷的主机,将攻击数据路由到原本无法到达的目的地。

查看Metasploit框架提供的端口扫描工具:

msf>search portscan

使用SYN端口扫描器对单个主机进行扫描。

msf>use scanner/portscan/syn
msf auxiliary(syn)>set RHOST 192.168.1.155
msf auxiliary(syn)>set THREADS 50
msf auxiliary(syn)>run

这里写图片描述
结果可以看到135、139、445端口都是开放的。

三、针对性扫描:

1、服务器消息块协议扫描
利用smb_version模块来遍历一个网络,并获取Windows系统的版本号。

msf>use scanner/smb/smb_verison
msf auxiliary(smb_verison)>set RHOSTS 192.168.1.155
msf auxiliary(smb_verison)>run

这里写图片描述

可以使用set THREAD 线程数 增加扫描线程的数量以加快扫描速度。

msf auxiliary(smb_verison)>db_hosts -c address,os_flavor

2、搜寻配置不当的Microsoft SQL Server
配置不当的MS SQL通常是进入目标系统的第一个后门。

MS SQL安装后,默认监听在TCP端口1433或使用随机的动态TCP端口。随机情况下,使用mssql_ping模块,获取随机的TCP端口。

当Metasploit发现MS SQL服务器后,他会将所有能够获取的关于服务器的信息都显示出来。

msf>use scanner/mssql/mssql_ping
msf auxiliary(mssql_ping)>show options
msf auxiliary(mssql_ping)>set RHOSTS 192.168.1.0/24
msf auxiliary(mssql_ping)>set THREAD 255
msf auxiliary(mssql_ping)>run

这里写图片描述

扫描器定位了MSSQL服务器地址,MSSQL实例名,服务器的版本号,服务器监听的TCP端口。

3、SSH服务器扫描
SSH安全shell,是一种安全协议,在这里仅指数据传输的加密。

使用Metasploit框架的ssh_version模块来表示目标服务器上运行的ssh版本。

msf>use scanner/ssh/ssh_verison
msf auxiliary(ssh_verison)>set THREADS 50
msf auxiliary(ssh_verison)>run

这里写图片描述

不同的服务器安装了不同的补丁等级的版本。

4、FTP扫描:
FTP–应用层协议
使用ftp_verison模块来进行扫描。

msf>use scanner/ftp/ftp_verison
msf auxiliary(ftp_verison)>show options
msf auxiliary(ftp_verison)>set RHOSTS 192.168.1.0/24
msf auxiliary(ftp_verison)>set THREADS 255
msf auxiliary(ftp_verison)>run

这里写图片描述

识别FTP服务器。

使用scanner/ftp/anonymous模块检查FTP服务器是否允许匿名用户登录。

msf>use auxiliary/scanner/ftp/anonymous
msf auxiliary(anonymous)>set RHOSTS 192.168.1.0/24
msf auxiliary(anonymous)>set THREADS 50
msf auxiliary(anonymous)>run

这里写图片描述

显示这台服务器允许匿名用户登录,且匿名用户具有读和写的权限。

5、简单网管协议扫描
简单网管协议SNMP–用于网络设备中,报告带宽利用率、冲突率以及其他的信息。
Metasploit框架设置了辅助模块scanner/snmp/snmp_enum,为SNMP扫描设计。

利用scanner/snmp/snmp_login模块,尝试对一个IP或一段IP使用字典才猜解SNMP团体字符串。

msf>use scanner/snmp/snmp_login
msf auxiliary(snmp_login)>set RHOSTS 192.168.1.0/24
msf auxiliary(snmp_login)>set THREADS 50
msf auxiliary(snmp_login)>run

这里写图片描述
GSM7224字符串为SNMP团体字符串。


四、编写自己的扫描器

Metasploit框架软件的扫描器模块包括各种mixin混入类
Mixin为你预定义的函数和调用的攻击代码。

Auxiliary::Scanner mixin重载了Auxiliary基类的run方法。在运行时可以使用run_host(IP),run_range(地址范围),run_batch(IP列表文件)调用模块的方法,然后对IP地址进行处理。

例子:TCP扫描器。默认将连接到远程主机的12345端口,连接后发送HELLO SERVER,收到服务器响应后将服务器响应消息和服务器IP地址输入到屏幕。

#Metasploit
require 'msf/core'
class Metasploit3<Msf::Auxiliary
    include Msf::Exploit::Remote::Tcp
    include Msf::Auxiliary::Scanner
        def initialize
            super(
                'Name' =>'My custom TCP scan',
                'Vserion' =>'$Revision:1 $',
                'Description' =>'My quick scanner',
                'Author' =>'Your name here',
                'License' =>MSF_LICENSE
                )
                register_options(
                    [
                        Opt::RPROT(12345)
                    ],self.clss)
        end

        def run_host(ip)
            connect()
            sock.puts('HELLO SERVER')
            data=sock.recv(1024)
            print_status("Received:#{data} from #{ip}") 
            disconnect()
        end
    end
  • Msf::Exploit::Remote::Tcp mixin处理TCP通信;
  • Msf::Auxiliary::Scanner mixin继承扫描器所需的各个参数与执行方法;
  • Opt::RPROT(12345)端口被设定为12345;
  • sock.puts(‘HELLO SERVER’)一旦连接到服务器,发送一个消息;
  • print_status(“Received:#{data} from #{ip}”)接收到服务器的响应,将响应消息和服务器地址输出到屏幕。

将自定义的脚本存在module/auxiliary/scanner/路径下,命名为simple_tcp.rb。

测试:netcat对端口12345进行监听,并通过管道输入一个文本文件模拟服务器响应。

root@bt:~# echo "Hello Metasploit" > banner.txt
root@bt:~# nc -lvnp 12345 < banner.txt

接下来启动MSF终端。

msf>use auxiliary/scanner/simple_tcp
msf auxiliary(simple_tcp)>show options
msf auxiliary(simple_tcp)>set RHOSTS 192.168.1.101
msf auxiliary(simple_tcp)>run!

结果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值