渗透测试学习笔记-信息收集(3)

Posted by CoCo1er on 2019-09-03
Words 4.6k and Reading Time 18 Minutes
Viewed Times

信息收集

被动信息收集

  • 公开渠道可获得的信息
  • 与目标系统不产生直接交互
  • 尽量避免留下一切痕迹

收集内容

  • IP地址段
  • 域名信息
  • 邮件地址
  • 文档图片数据
  • 公司地址
  • 公司组织架构
  • 联系电话/传真号码
  • 人员姓名/职务
  • 目标系统使用的技术构架(部分。主要还需要主动方式来收集)
  • 公开的商业信息

信息用途

  • 用信息描述目标
  • 发现
  • 社会工程学攻击
  • 物理缺口

信息收集——DNS

  • 域名解析成IP地址
    • 域名与FQDN区别 (sina.com 域名 , www.sina.com 只是sina.com下的一条主机记录,称为FQDN)
    • 域名记录:A、C name 、NS、MX、NS

FQDN(全限定域名):同时带有主机名和域名的名称

例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com。

  • A记录:这个域名对应的IPv4地址
  • AAAA记录:这个域名对应的IPv6地址
  • CNAME记录:该域名指向了另外一个域名,这两个域名都指向同一个ip地址
  • PTR记录:被称为指针记录,是A记录的逆向记录,作用是把ip地址解析成域名
  • NS记录:NS记录是域名服务器记录,用来指定域名由哪台服务器来进行解析
  • MX记录:邮件交换记录,指向这个域的smtp服务器地址
  • TXT记录:为域名设置某条记录的说明
  • SPF记录:SPF记录是TXT记录的一个运用。后面的备注需要按照指定的格式才能有效。

nslookup

  • nslookup www.sina.com
  • server(server命令设置使用其他DNS服务器。不使用本地运营商提供的DNS服务器)
  • type = a、mx、ns、any
  • nslookup -type= ns example.com 159.154.70.22

直接输入nslookup

> www.sina.com

或者set type=ns <==> set q = ns 再查询

> server 8.8.8.8

(用不同dns服务器解析可能会对域名解析出不同地址,这种情况经常出现,这是因为互联网大部分网站采用智能DNS,终端用户所处的网络不同,DNS查询的结果可能是不一样的,eg:在北京查询sina.com 返回sina.com域名放置在国内的服务器的地址,在纽约查询则返回sina.com域名放置在美国的服务器的地址,就不会做远距离跨国家出口的访问,为优化互联网流量开发出来的智能功能)

set q = any 查询出来既有ns记录也会有mx记录,关于域名的所有记录都有

text记录中的spf记录——用于反垃圾邮件

(spf记录作用也是将一个ip地址反向解析成对应域名,比如有一个邮件服务器,在上面配置了反垃圾邮件设置,开启反向的域名解析查询,当收到一封邮件的时候,服务器会对来源的地址进行spf记录的反向查询,查询到对应的域名,如果查询到的域名匹配到了发送方”填写”的域名,说明是正确的邮件服务器发来的邮件,匹配不到说明是伪造的域名发来的垃圾邮件)

DIG

  • dig sina.com any @8.8.8.8 (只会查sina.com的结果,不会查www.sina.com等其他带有主机名的FQDN的相关记录)
  • dig +noall +answer mail.163.com any (只输出的answer部分)
  • 反向查询:dig -x 220.181.14.157 (其实就是查的ptr记录)
  • bind版本信息: dig +noall +answer txt chaos VERSION.BIND @ns3.dnsv4.com
  • DNS追踪: dig + trace example.com

补充:

  • 一个ip可以绑定多个域名
  • 通常情况下一个域名同一时刻只能对应一个ip。但是在域名服务商那里,你可以把服务器群里面的多个提供相同服务的服务器IP设置一个域名可以轮询。但是同一时刻,一个域名只能解析出一个IP供你使用。这些IP可以轮流着被解析。这些IP其实对应的服务器提供的是同一种的服务。(比如说DNS轮询技术(负载均衡技术)下去查询域名,可以查出多个对应ip)
  • DNS轮询技术:是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术,该项技术可以智能的调整网站的访问量到不同服务器上,减轻网站服务器的压力,实现负载匀衡

  • 什么是bind?

    Bind(Berkeley Internet Name Domain Service),它是一款实现DNS服务器的开放源码软件,够提供双向解析,转发,子域授权,view等功能,是世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器有都是用Bind来架设的。

  • 一个最完美的dns信息收集是给一个域名,查出该域名以及其他FQDN对应的记录信息。变相思路就是渗透到DNS服务器去获取所有信息,通过dig查询bind版本可能可以得到可利用漏洞。(一般查不到..)

  • DNS追踪,绕过本地DNS服务器询问,直接去与根域服务器、com域服务器等进行迭代查询,这样就可以在查询过程中发现(com域服务器等)是否地址被改变(是否被劫持)。而直接向本地DNS服务器请求的递归查询是发现不了这个问题的。在实际抓包验证中,还是会先向本地DNS查询根域(本机默认是不知道这些根域的地址的),后续也一样的流程,相当于原来是由本地dns服务器做完后续的一切查询最后返回结果,中间过程无法得知。而trace的话是每一次对根域、com域的查询都由客户端DNS发起通过本地DNS为媒介去查询,每一次查询结果缓存在本地DNS中,下一次查询客户端信任本地DNS继续迭代查询。(递归查询抓包就2个包,trace的迭代查询抓包会出来很多包(如果本地DNS没有缓存的话),详细的迭代查询流程的包)

DNS区域传输

  • dig @ns2.sina.com sina.com axfr (尝试从ns2.sina.com这台域名服务器中查询出sina.com的域名下的所有主机记录信息,增加攻击面) (大多情况连接53端口会被拒绝,axfr用的是TCP)
  • host -T -l sina.com ns3.sina.com/ 8.8.8.8等域名服务器 (也是全区域传输查询)

DNS字典爆破

区域传输一般很少见,比较常见的方法是DNS字典爆破(爆破某域下的主机名)

  • fierce -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt (先会进行区域传输查询,失败则继续字典爆破)
  • dnsdict6 -d4 -t 16 -x sina.com (速度快,字典质量较高)
  • dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
  • dnsmap sina.com -w dns.txt (速度较慢)
  • dnsrecon -d sina.com —lifetime 10 -t brt -D dnsbig.txt (速度也比较快)
  • dnsrecon -t std -d sina.com -D dnsbig.txt

推荐:dnsdict6 、 dnsrecon 、 fierceb

DNS注册信息

  • whois sina.com
  • whois -h whois.apnic.net 192.0.43.10

搜索引擎

  • 公司新闻动态
  • 重要雇员信息
  • 机密文档/网络拓扑
  • 用户名/密码
  • 目标系统软硬件技术构架

SHODAN

  • 搜索联网设备
  • Banner:http、ftp、ssh、telnet
  • https://www.shodan.io/
  • 常见filter:
    • net (192.168.20.1) eg: net:8.8.8.8
    • city
    • country(CN、US)
    • port (80、21、22、23)
    • os
    • Hostname
    • server eg: server: Apache

搜索规则:https://www.shodan.io/explore

Google

  • +支付 -充值 (含有支付,不含有充值的搜索结果)
  • 支付 充值(含有支付或者含有充值) “支付 充值” (就是搜索完整的一串支付充值)
  • 北京的电子商务公司—— 北京 intitle:电子商务 intext:法人 intext:电话
  • 阿里网站上的北京公司联系人—— 北京 site:alibaba.com inurl:contact
  • 塞班司法案的PDF文档—— SOX filetype:pdf
  • 法国的支付相关的页面—— payment site:fr

实例:

  • inurl: “level/15/exec/-/show”
  • intitle:”netbotz appliance” “ok” eg: http://207.150.248.14
  • inurl:/admin/login.php
  • inurl:qq.txt
  • filetype:xls “username|password”
  • inurl:ftp “password” filetype:xls site:baidu.com

搜索规则:GHDB——https://www.exploit-db.com/google-hacking-database

YANDEX

用户信息

​ 调用搜索引擎去实现,大量并发去搜索效率高

theharvester

邮件、主机

  • theharvester -d sina.com -l 300 -b google

文件

  • metagoofil -d microsoft.com -t pdf -l 200 -o test -f 1.html

MELTAGO

延展性的信息收集工具(图形化界面)

  • 申请账号
  • 登录使用

信息收集——其他途径

个人专属密码字典

METADATA

  • Exif图片信息
    • exiftool a.jpg
  • Foca(Windows下图片信息)

RECON-NG

  • 全特性的web侦察框架、信息搜索框架
  • 基于python开发
  • 命令格式与msf一致
  • 使用方法:
    • 模块
    • 数据库
    • 报告
  • recon-ng -w sina 进入“新浪”工作区
  • 框架内help 查看命令

主动信息收集

  • 直接与目标系统交互通信
  • 无法避免留下访问的痕迹
  • 使用受控的第三方电脑进行探测
    • 使用代理或已经被控制的主机
    • 做好被封杀的准备
    • 使用噪声迷惑目标,淹没真实的探测流量
  • 扫描
    • 发送不同的探测,根据返回结果判断目标状态(ip层、端口层、服务层)

发现

  • 识别活着的主机(不扫描端口)
    • 潜在的被攻击目标
  • 输出一个ip地址列表
  • 2、3、4层发现

OSI理论7层模型(实际大多4-5层)

发现——二层发现

  • 优点:扫描速度快、可靠
  • 缺点:不可路由(大多数情况下)(即只在内网广播)
  • Arp协议
    • 抓包

(不同内网环境下可以使用的方法可能会受限,多了解)

arping

用来发现一个主机ip是否存活在网络里

  • arping
  • arping 1.1.1.1 -c 1 (发送一个数据包)
  • arping 1.1.1.1 -d (发现重复响应,如果应答从两个不同mac地址发送出来响应同一个ip则中断——发现arp欺骗)(对网关进行检测)
  • arping -c 1 1.1.1.1 | grep “bytes from” | cut -d “ “ -f 5 |cut -d “(“ -f 2 | cut -d “)” -f 1
  • 脚本
    • arping1.sh eth0 >addrs
    • arping2.sh addrs
nmap
  • nmap 1.1.1.1-254 -sn (发送arp包,还会有dns反向查询)
  • nmap -iL iplist.txt -sn
Netdiscover
  • 专用于二层发现
  • 可用于无线和交换网络环境
  • 主动和被动探测
  • 主动
    • netdiscover -i eth0 -r 1.1.1.0/24
    • netdiscover -l iplist.txt
  • 被动(混杂模式监听广播包)
    • netdiscover -p
    • 主动arp容易触发报警
Scapy
  • Scapy
    • 作为python库进行调用
    • 也可以作为单独的工具使用
    • 抓包、分析、创建、修改、注入网络流量
  • apt-get install python-gnuplot
  • Scapy
    • ARP().display()
    • Sr1()
  • Python脚本编写

发现——三层发现

  • 优点
    • 可路由
    • 速度比较快
  • 缺点
    • 速度比二层慢
    • 经常被边界防火墙过滤(造成扫描结果不准确)
  • IP、icmp协议
Ping
  • ping 1.1.1.1 -c 2
  • ping -R 1.1.1.1 / traceroute 1.1.1.1 (通过TTL值从1、2、3开始置起发送ICMP包,每经过一个路由TTL值减1,到0时发送回包,此时获得第n序列的路由器ip,这种方式来获取整个路由路径)
  • ping 1.1.1.1 -c 1 | grep “bytes from” | cut -d “ “ -f 4 | cut -d “:” -f 1
  • 脚本实现(scapy)(略)
nmap
  • nmap -sn 1.1.1.1-255 (在本网段下发送的arp,在外网发送的icmp数据包,同样也会有DNS解析,另外还有TCP包)
  • nmap -iL iplist.txt -sn
fping

​ 比ping命令用法更丰富,可以对地址段进行ping,ping响应的内容也更多

  • fping 1.1.1.1 -c 1
  • fping -g 1.1.1.0 1.1.1.255
  • fping -g 1.1.1.0/24
  • fping -f iplist.txt
Hping3

​ 几乎可以实现对包内容的每一个字段的自定义,类似scapy

  • Hping
    • 能够发送几乎任意TCP/IP包
    • 功能强大但每次只能扫描一个目标
  • hping3 1.1.1.1 —icmp -c 2
  • 脚本方式实现:
    • for addr in $(seq 1 254) : do hping3 1.1.1.$addr —icmp -c 1 >>handle.txt & done

发现——四层发现

​ 此处只在于发现ip,不在于发现端口

  • 优点
    • 可路由且结果可靠
    • 不太可能被防火墙过滤
    • 甚至可以发现所有端口都被过滤的主机
  • 缺点
    • 基于状态过滤的防火墙可能过滤扫描
    • 全端口扫描速度慢
  • TCP
    • 未经请求的ACK——RST(直接发第三阶段的ACK,服务器拒绝贸然发来的ack直接回应RST包,这样证明了该主机存活)
    • SYN——SYN/ACK、RST (正常的请求过程)
  • UDP
    • ICMP端口不可达、一去不复返

通过scapy构造实现(略)

nmap
  • nmap 1.1.1.1-254 -PU53 -sn
  • nmap 1.1.1.1-254 -PA80 -sn 直接发ACK包
  • nmap -iL iplist.txt -PA80 -sn

只做主机发现,不做端口扫描

hping3
  • hping3 —udp 1.1.1.1 -c 1 返回ICMP端口不可达即证明主机存活 (UDP准确度不是很高)

端口扫描

UDP端口扫描

  • 端口对应网络服务及应用端程序
  • 服务端程序的漏洞通过端口攻入
  • 发现开放的端口
  • 更具体地攻击面
  • UDP端口扫描
    • 假设ICMP port unreachable 响应代表端口关闭
    • 目标系统不响应ICMP port unreachable时则端口开放(与主机发现相反,可能产生误判)
  • 完整的UDP应用层请求
    • 准确性高
    • 耗时巨大
nmap
  • nmap -sU 1.1.1.1
    • 默认的1000个端口
    • ICMP host-unreachable (基于UDP就是基于这个特征来探测)
  • nmap -sU 192.168.1.134 -p1-65535 或者 -p-
  • nmap -iL iplist.txt -sU -p 1-200

TCP端口扫描

  • 基于连接的协议
  • 三次握手
  • 隐蔽扫描
  • 僵尸扫描
  • 全连接扫描
  • 所有的TCP扫描方式都是基于三次握手的变化来判断目标端口状态

隐蔽扫描——syn
  • 不建立完整连接
  • 应用日志不记录扫描行为——隐蔽

(应用层日志由于没建立连接所以不会有记录,网络层进行深度审计还是可以发现)

  • nmap 192.168.1.134 -p1-100 默认按syn扫描 (加—open 只显示扫描出来的open的端口)
  • nmap -sS 1.1.1.1 -p 80,21,25 (按syn扫描)
  • hping3 1.1.1.1 —scan 80 -S
僵尸扫描
  • 极其隐蔽
  • 实施条件苛刻
  • 可伪造源地址
  • 选择僵尸机
    • 闲置系统(足够空闲,没有其他主机与它通信)
    • 系统使用递增的IPID
      • 0
      • 随机

(第三步如果扫描者接到的RST包IPID=x+2则可以判断之前伪造的扫描请求端口是开放的,否则不开放的情况下IPID=x+1)

  • 查询是否能充当一个好的僵尸机
    • nmap -p445 192.168.1.133 —script=ipidseq.nse
  • 扫描目标
    • nmap 192.168.1.134 -sI 【僵尸机ip(在同一个网络里别人的主机)】 -Pn -p 0-100

服务扫描

  • 识别开放端口上运行的应用
  • 识别目标操作系统
  • 提高攻击效率
    • Banner捕获
    • 服务识别
    • 操作系统识别
    • SNMP分析
    • SMB扫描
    • 防火墙识别
  • 软件开发商
  • 软件名称
  • 服务类型
  • 版本号
    • 直接发现已知的漏洞和弱点
  • 连接建立后直接获取banner(不可避免留下连接痕迹)

eg: nc -nv 1.1.1.1 22

eg: 简单的一些函数测试(略)

1
2
3
4
5
6
7
8
#python socket 控制台下
import socket
banner = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
banner.connect(("192.168.1.134",21))
banner.recv(4096)
banner.close()
exit()
# 某些应用软件的banner不允许抓取,recv函数无返回将挂起

nmap扩展:/usr/share/nmap/scripts 自带了许多nmap脚本(lua语言编写

ls | grep ms-sql

eg: amap -B 192.168.1.133 1-445

服务识别
  • 另类服务识别方法(banner提供的信息有限)
    • 特征行为和响应字段
    • 不同的响应可用于识别底层操作系统

eg: nmap 192.168.1.134 -p1-100 -sV 识别端口服务(不仅仅基于banner,还会基于指纹特征等)

eg: amap 192.168.35.1 20-30 -qb

操作系统识别
  • 操作系统识别技术
    • 种类繁多
    • 好产品采用多种技术组合
  • TTL起始值
    • Windows:128(65-128)
    • Linux/Unix:64(1-64)
    • 某些Unix:255

eg:nmap 1.1.1.1 -O

eg:xprobe2 192.168.1.134 (不太准)

  • 被动操作系统识别

    • IDS
    • 抓包分析

    eg:p0f(自动监听流量并识别os)

SNMP
  • 简单网络管理协议
  • 信息的金矿
  • Community strings(snmp的身份验证)
  • 信息查询或重新配置
  • 经常被错误配置
  • public / private / manager
  • MIB tree
    • SNMP Management Information Base (MIB)
    • 树型的网络设备管理功能数据库
    • 1.3.6.1.4.1.77.1.2.25
  • onesixtyone 1.1.1.1 public
  • onesixtyone -c dict.txt -i hosts -o my.log -w 100
  • snmpwalk hosts -c public -v 2c
SMB扫描
  • Server Message Block 协议
    • 微软历史上出现安全问题最多的协议
    • 实现复杂
    • 默认开放
    • 文件共享
    • 空会话未身份认证访问(SMB1)
      • 密码策略
      • 用户名
      • 组名
      • 机器名
      • 用户、组ID
  • nmap -v -p135,445 192.168.60.1-20
  • nmap 192.168.1.132 -p139,445 —script=smb-os-discovery.nse
  • nmap -v -p139,445 —script=smb-check-vulns —script-args=unsafe=1 1.1.1.1
  • nbtscan -r 192.168.1.0/24(nbtscan局域网下可以跨网段扫描)
SMTP扫描
  • 发现邮箱账号
  • nmap smtp.163.com -p25 —script=smtp-enum-users.nse —script-args=smtp-enum-users.methods={VRFY}
防火墙扫描
  • 通过检查回包,可能识别端口是否经过防火墙过滤
  • 设备多种多样,结果存在一定误差

负载均衡识别
  • 广域负载均衡
    • DNS
  • HTTP-load balancing
    • Nginx
    • Apache
  • lbd www.baidu.com
  • lbd mail.163.com
WAF识别