渗透测试——信息收集

信息收集

1、被动收集

利用第三方的服务对目标进行访问了解。公开的渠道获得目标主机的信息,不直接与系统交互,避免留下痕迹。例如google搜索

1.1 域名信息收集

kali自带whois 天眼查 ICP备案查询网

whois查询

//whois.aliyun.com//whois.chinaz.com

//whois.aizhan.com //www.whois365.com/cn

//www.virustotal.com/gui/home/url //www.webscan.cc

备案信息查询

//beian.miit.gov.cn //www.tianyancha.com

1.2 敏感信息收集

Google Hacking //www.exploit-db.com/google-hacking-database

Google语法

关键字 说明
site 指定域名
inurl url中存在关键字的网页 例:inurl:admin_login.asp(登录界面)
intext 网页正文中的关键字
filetype 指定文件类型(torrent是种子文件)例:kali filetype:torrent
info 查找指定站点的一些基本信息
intitle 网页标题中的关键字 intitle:index.of .bash history
link 返回所有和该域名做了链接的url
cache 搜索Google里关于某些内容的缓存,一些页面被删除但还是可以找到
index.of 网页内容开放

敏感目录文件收集工具:DirBuster等

1.3 shodan暗黑谷歌搜索引擎

webcam 网络摄像头 set:ip city: 北京 port:80

1.4 子域名收集

1.4.1 子域名收集站点

//dnsdumpster.com//dns.aizhan.com//phpinfo.me/domain//tool.chinaz.com

1.4.2 证书透明度公开日志枚举

//crt.sh//censys.io

1.4.3 收集工具

登录到//www.maltego.com/ce-registration/ 用gmail注册账号(方便接收激活信息)然后到kali登录

layer子域名挖掘机

subDomainsbrute

基本命令

python subDomainsbrute.py xxx.com 

kali自带模块fierce(适用于kali 2021.1)

fierce --domain xxx.com

1.5 CMS指纹识别

站点://github.com/Ms0x0/Dayu
//www.yunsee.cn
//whatweb.bugscaner.com
工具:御剑web指纹识别、轻量WEB指纹识别

1.6 查找真实IP

CDN
//ping.chinaz.com//viewdns.info

//api.asm.saas.broadcom.com//ip138.com

2、主动收集

通过直接访问、扫描网站,将流量流经网站。直接与目标系统交互通信、无法避免留下访问痕迹、使用肉鸡探测做好被封杀的准备、扫描发送不同的探测根据返回结果判断目标状态。nmap 等

2.1 OSI模型扫描

TCP/IP五层模型 对应网络设备 对应协议
应用层(为应用程序提供服务)、表示层(数据格式转化、数据加密)、会话层(建立、管理和维护会话) 应用层 HTTP Telnet FTP DNS TFTP SMTP
传输层(建立、管理和维护端到端的连接) 四层交换机、四层路由器 TCP UDP
网络层(IP地址及路由选择) 路由器、三层交换机 IP ICMP RIP IGMP
数据链路层(提供介质访问和链路管理) 网桥、以太网交换机、网卡 ARP RARP IEEE802.3 PPP CSMA/CD
物理层 中继器、集线器、双绞线 FE自协商 Manchester MLT-3 PAM5

二层扫描:扫描速度快、可靠、不可路由

三层扫描:可路由、速度较快比二层扫描慢、经常被边界防火墙过滤、使用IP、ICMP协议

四层扫描:可路由、结果可靠、不太可能被防火墙过滤、可以发现所有端口都被过滤的主机、基于状态过滤的防火墙可能过滤扫描、全端口扫描慢

2.2 ping探测服务器存活(基于二层扫描)

2.2.1 简单ping

ping ip -c 1   //-c 1 只ping一次
traceroute baidu.com //路由跟踪

2.2.2 arping(排查黑客是否冒充网关进行中间攻击)

arping ip 出现两个mac地址对应一个IP地址就是有ARP攻击

netdiscover:主动/被动的arp侦查工具

netdiscover -i etho -r 192.168.1.0/24 //-i:指定网络设备 -r:扫描范围。-P被动扫描

2.2.3 Hping3 对服务器进行dos攻击每次扫描一个目标(压力测试)

hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source xxx.xxx

-c 1000 发送的数据包的数量
-d 120 发送到目标机器的每个数据包的大小单位字节
-S syn数据包
-w 64 tcp窗口大小
-p 80 目的地端口
–flood 尽可能快的发送数据包不需要考虑显示入站回复(洪水攻击模式) –rand-source 使用随机性的源头ip地址。在局域网中伪造。通过路由器后还是会还原成真实的ip地址

2.3 nmap半连接扫描-nc扫描端口

kali系统中自带nmap和nc工具,命令用法如下

nmap -sS 192.168.1.64 -p 80,81,21,25,110,443  //-sS表示使用SYN半连接扫描。扫描速度快。                 
nmap -sS 192.168.1.64 -p 1-1024
nc -nv -w 1 -z 192.168.1.64 1-1024  //-nv表示我们扫描的目标是个ip地址不做域名解析 -w表示超时时间 -z表示端口扫描

端口扫描的其他工具:御剑高速TCP端口扫描工具

2.4 scapy定制arp和icmp数据包扫描

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

scapy 
exit() //退出
INF0: Can't import matplotlib. Won't be able to plot. //报错
apt-get install python-matplotlib //解决方案

2.4.1 定义ARP包 arp函数使用方法

>>> ARP().display()
###[ ARP ]### 
  hwtype= 0x1               硬件类型
  ptype= IPv4               协议类型
  hwlen= None               硬件地址长度(MAX)
  plen= None                协议地址长度(IP)
  op= who-has               who-has查询
  hwsrc= 00:0c:29:a3:ba:39  源MAX地址
  psrc= 192.168.88.132      源IP地址
  hwdst= 00:00:00:00:00:00  目的MAX地址
  pdst= 0.0.0.0             目的IP地址,向谁发送查询请求

例:使用sr1函数(发送和接收数据包)生成一个ARP请求包询问谁是192.168.1.1

>>> sr1(ARP(pdst="192.168.88.143"))
Begin emission:
Finished sending 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
<ARP  hwtype=0x1 ptype=IPv4 hwlen=6 plen=4 op=is-at hwsrc=00:0c:29:d9:16:2d psrc=192.168.88.10\x00\x00\x00\x00\x00\x00' |>>

2.4.2 定义ping包

IP()生成ping包的原IP和目标IP,ICMP()生成ping包的类型。使用IP()和ICMP()两个函数可以生成ping包,进行探测。(修改IP包头的dst,也就是目的地址,然后拼接上ICMP的数据包类型,最后使用sr1进行发送数据包并接受)

>>> sr1(IP(dst="192.168.88.143")/ICMP(),timeout=1)
Begin emission:
Finished sending 1 packets.
..*
Received 3 packets, got 1 answers, remaining 0 packets
<IP  version=4 ihl=5 tos=0x0 len=28 id=9545 flags= frag=0 ttl=128 proto=icmp chksum=0xe333 src=192.168.88.143 dst=192.168.88.132 |<ICMP  type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |<Padding  load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>>

2.5 scapy定制TCP协议SYN请求和UDP请求

2.5.1 定制TCP协议

>>> sr1(IP(dst="192.168.88.143")/TCP(flags='S',dport=80),timeout=1)
Begin emission:
Finished sending 1 packets.
..*
Received 3 packets, got 1 answers, remaining 0 packets
<IP  version=4 ihl=5 tos=0x0 len=40 id=10238 flags=DF frag=0 ttl=128 proto=tcp chksum=0xa06d src=192.168.88.143 dst=192.168.88.132 |<TCP  sport=http dport=ftp_data seq=0 ack=1 dataofs=5 reserved=0 flags=RA window=0 chksum=0x7d07 urgptr=0 |<Padding  load='\x00\x00\x00\x00\x00\x00' |>>>                                                 

我们得到一个flags=SA的数据包,即SYN+ACK.我们收到服务器tcp三次握手中的第二个包,表示端口开放(相对于直接访问不会被服务器记录,基于TCP的半连接扫描,更隐秘,更不容易被发现)

2.5.2 定制UDP协议

没有收到回应包,表示端口开放,收到回应包,表示UDP端口关闭或者此端口是非UDP端口。UDP协议不是那么的可靠

>>> sr1(IP(dst="192.168.88.143")/UDP(dport=80),timeout=2)
Begin emission:
Finished sending 1 packets.
.*
Received 2 packets, got 1 answers, remaining 0 packets
<IP  version=4 ihl=5 tos=0x0 len=56 id=9362 flags= frag=0 ttl=128 proto=icmp chksum=0xe3ce src=192.168.88.143 dst=192.168.88.132 |<ICMP  type=dest-unreach code=port-unreachable chksum=0x2f7b reserved=0 length=0 nexthopmtu=0 |<IPerror  version=4 ihl=5 tos=0x0 len=28 id=1 flags= frag=0 ttl=64 proto=udp chksum=0x486c src=192.168.88.132 dst=192.168.88.143 |<UDPerror  sport=domain dport=80 len=8 chksum=0xccf4 |>>>>                                                   
>>> 
┌──(root💀kali)-[~/桌面]
└─# nmap -sS 192.168.88.143 -p 80

Starting Nmap 7.91 ( //nmap.org ) at 2021-01-11 16:35 CST
Nmap scan report for 192.168.88.143
Host is up (0.00094s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:0C:29:D9:16:2D (VMware)

2.6 社会工程学

取得得关键人的信任,挖掘出重要信息。
工具:社工库