Skip to content

二、主动信息收集

2.1 基于OSI模型进行扫描的优缺点

  • 二层扫描的优缺点
    • 扫描速度快、可靠
    • 不可路由
  • 三层扫描的优缺点
    • 可路由、速度较快
    • 速度比二层慢,经常被边界防火墙过滤
  • 四层扫描的优缺点
    • 可路由且结果可靠
    • 不太可能被防火墙过滤
    • 可以发现所有端口都被过滤的主机
    • 基于状态过滤的防火墙可能过滤扫描
    • 全端口扫描速度慢

2.2 基于ping命令的探测

ping 命令是我们常用的判断主机之间网络是否畅通,同样也是能判断我们的目标主机是否存活。

traceroute 命令可以对路由进行跟踪

fping 就是 ping命令 的加强版他可以对 一个IP段 进行ping扫描,而**ping命令 **本身是 不可以 对网段进行扫描的。

bash
fping -a -g 192.168.0.0/24 >fping.txt   
#ping一个网段,查看在线设备
#-a             #显示在线设备
#-g             #指定一个网段
#>fping.txt    #输出结果定向的到fping。txt

arping

主动发送arp包去询问,速度快,但 可能被发现

bash
arping 192.168.0.1 -c 4    #发送4个arp包

netdiscover

bash
netdiscover -i eth0 -r 192.168.71.0/24    #指定网卡和网段,网段内所有ip依次发送arp包
netdiscover -p      #-p被动模式,不发送任何内容,只做嗅探

hping3

hping3是一个命令行下使用的TCP/IP数据包组装/分析工具,通常web服务会用来做压力测试使 用,也可以进行DOS攻击的实验。同样Hping只能每次扫描一个目标。

bash
hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source 域名
#-c 1000               
#指定发送数据包数量
#-d 120                       
#指定发送到目标主机的数据包大小(以字节为单位)
#-S                              
#表示只发送SYN数据包(三次握手中的SYN包)
#-w 64                        
#指定tcp窗口大小
#-p 80                          
#目的端口80
#--flood                       
#表示洪水攻击模式,尽快发送数据包
#--rand-source          
#使用随机的源ip地址,注:此处伪造的IP地址,仅用于局域网中伪造。

2.3 基于Nmap的扫描方式

Nmap基本参数

bash
nmap 192.168.0.103                 #扫描在线端口
namp -sS -sV -T4 192.168.0.103     #使用tcp syn扫描,版本探测,快速扫描
nmap -A -T4 192.168.0.103          #全面快速扫描
nmap --top-ports 100 192.168.0.103 #扫描最常开放的100个端口
nmap --script=vuln 192.168.0.103   #采用vuln脚本扫描发现漏洞
nmap -p 1-200 192.168.0.103        #指定扫描端口
nmap -O 192.168.0.103              #显示操作系统信息
nmap -sP 192.168.0.0/24            #仅使用ping命令发现扫描网段
nmap -Pn 192.168.0.103             #非ping扫描
nmap --traceroute 192.168.0.103    #增加路由跟踪
nmap --randomize-hosts --scan-delay 5 192.168.0.103.100-106
#延迟5s随机扫描100-106端口,达到隐藏效果

使用nc扫描端口

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简 单、可靠的网络工具

bash
nc -nv -w 1 -z 192.168.0.1 1-100
-nv 表示扫描的目标是ip地址不做域名解析
-w 表示超时时间
-z 表示进行端口扫描

2.4 使用scapy定制数据包

Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制 作侦测、扫描和攻击网络的工具。

scapy定制arp协议

bash
ARP().display()                 #查看ARP函数用法
  hwtype= 0x1                   #硬件类型
  ptype= IPv4                   #协议类型
  hwlen= None                   #硬件地址长度(MAC)
  plen= None                    #协议地址长度(IP)
  op= who-has                   #who-hans查询
  hwsrc= 00:0c:29:85:05:1b      #源MAC地址
  psrc= 192.168.2.112           #源IP地址
  hwdst= 00:00:00:00:00:00
  pdst= 0.0.0.0                 #目标IP
  
  sr1(ARP(pdst="192.168.2.1"))

scapy定制ping包

bash
ICMP().display()
IP().display()
sr1(IP(dst="192.168.2.1")/ICMP(),timeout=1)

注:IP()生成ping包的源IP和目标IP,ICMP()生ping包的类型。使用IP())和ICMP()两个函数,可以生成ping包,进行探测。

scapy定制TCP协议syn请求

bash
TCP().display()            #查看tcp函数用法
  sport= ftp_data         #*tcp源端口
  dport= http             #*tcp目的端口
  seq= 0                   #32位序号
  ack= 0                   #32位确认序号
  dataofs= None            #4位首部长度
  reserved= 0              #保留6位
  flags= S                #*标志域,紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN
  window= 8192             #窗口大小
  chksum= None             #16位效验和
  urgptr= 0                #优先指针
  options= []              #选项
  
  sr1(IP(dst="192.168.2.1")/TCP(flags="S",dport=80),timeout=1)

2.5 僵尸扫描

僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。但是僵尸扫描中的 僵尸主机指得是一个闲置的操作系统(这里的闲置是指主机不会主动和任何人通信),且此系统中IP数据 包中ID是递增的。

IPID: 指的是通信过中,IP数据包中的ID。

僵尸扫描拥有极高的隐蔽特性,但是实施条件苛刻。

1、目标网络可伪造源地址进行访问

2、选择僵尸机,僵尸机需要在互联网上是一个闲置的操作系统,需要系统使用递增的PID

僵尸扫描原理

  • 第一步 - 获取僵尸主机 IPID

    • 攻击者向僵尸主机发送SYN/ACK确认包

    • 僵尸主机返回我们RST数据包关闭连接,RST数据包中包含了IPID信息,假设IPID=x

  • 第二步 - 让僵尸主机IPID+1

    • 攻击者修改IP包头的SRC字段为僵尸主机的IP,伪装成僵尸主机给目标发SYN请求
    • 目标主机收到请求,如果端口开放,就会返回僵尸主机一个SYN/ACK数据包
    • 僵尸主机收到目标主机SYN/ACK确认表,因为没有SYN请求,所以僵尸主机给目标主机返回一个RST数据包,这个包表示关闭连接,此僵尸主机对外发出一个数据包,所以IPID值+1 ,为x+1
  • 第三步 - 再次获取僵尸主机IPID值

    • 攻击者再次向僵尸主机发送SYN/ACK确认包
    • 僵尸主机同样向攻击者返回一个RST,此僵尸主机对外又发出一个数据包,所以IPID值再+1,为x+2
  • 如果是x+2,则端口开放,x+1,则端口关闭

bash
scapy      #进入scapy
#给僵尸主机发送SYN/ACK数据包,rz1表示变量接收返回数据
rz1=sr1(IP(dst="192.168.1.2")/TCP(dport=445,flags="SA"))
#查看返回包数据
rz1.display()
#攻击者修改IP包头的SRC字段为僵尸主机IP,伪装成僵尸主机给目标主机发送SYN请求
rt=sr1(IP(src="192.168.1.2",dst="192.168.1.3")/TCP(dport=22),timeout=1)
rt.display()
#攻击者再次向僵尸主机发送SYN/ACK数据包,获取IPID
rz2=sr1(IP(dst="192.168.1.2")/TCP(dport=445,flags="SA"))
rz2.display()
#对比rz1和rz2的id

2.6 web网站目录扫描

常见敏感文件

  • 网站的备份文件/数据库备份文件 wwwroot.zip
  • 后台登录的目录 manage login
  • 安装包(源码)
  • 上传的目录 uploads
  • mysqlE的管理界面 phpmyadmin
  • 程序的安装路径 install
  • ......

常用工具

  • Burp Suite
  • dirb
  • 御剑
  • dirbuster
  • ......

2.7 CMS系统指纹识别

常见CMS

  • 企业建站系统:MetInfo(米拓)、蝉知、SiteServer CMS等
  • B2C商城系统:商派Shopex、ECshop、.HiShop、XpShop等;
  • 门户建站系统:DedeCMS(织梦)、帝国CMS、PHPCMS、动易、CmsTop等
  • 博客系统:VordPress、Z-Blog等;
  • 论坛社区:Discuz、.PHPwind、VeCenter等
  • 问答系统:Tipask、whatsns等,
  • 知识百科系统:HDwiki;
  • B2B门户系统:Destoon、B2 Bbuilder、.友邻B2B等
  • 人才招聘网站系统:骑士CMS、PHP云人才管理系统;
  • 房产网站系统:FangCms等;
  • 在线教育建站系统:Kesion、EduSoho;
  • 电影网站系统:苹果CMS、ctcms、.movcms等;
  • 小说文学建站系统:杰奇CMS,

常用工具

指纹识别内容

  • CMS信息:比如Discuz、织梦dedecms、帝国CMS、PHPCMS、ECshop等;
  • 前端技术:比如HTML5、jquery、.bootstrap、Vue、ace等;
  • 开发语言:比如PHP、Java、Ruby、Python、C#等;
  • Web服务器:比如Apache、Nginx,、IIS、lighttpd等;
  • 应用服务器:比如Tomcat、.Jboss、Neblogic、.Websphere等
  • 操作系统信息:比如Linux、win2k8、win7、Kali、Centos等;
  • CDN信息:是否使用CDN,如cloudflare、帝联、蓝讯、网宿、七牛云、阿里云等;
  • WAF信息:是否使用WAF,如D盾、云锁、宝塔、安全狗、360等

2.8 综合工具

  • ARL灯塔
  • yakit
  • goby
  • ......