2022渗透测试-信息收集笔记

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 2022渗透测试-信息收集笔记


1.被动信息收集

被动信息收集即不向目标系统进行探测,不会留下任何痕迹。通过网络、公开渠道进行信息收集 。收集的内容包括IP地址段、域名信息、邮件地址、⽂档图⽚数据、公司地址、公司组织架构、联系电话 / 传真、⼈员姓名 / 职务、目标系统使⽤用的技术架构、公开的商业信息等。

1.DNS信息收集

1.域名是分级的概念,而FQDN是域名下的主机(如:www.baidu.com),注意两者不同。

2.域名记录类型:A、CNAME、PTR、MX、NS、TXT、TTL

3.DNS查询工具

nslookup

eg:nslookup -type=ns baidu.com 8.8.8.8

dig (相比于nslookup准确性更高,功能更全)

eg:

dig @8.8.8.8 www.sina.com mx:向8.8.8.8服务器请求域名解析

dig +trace baidu.com:由本机迭代查询域名

dig -x <ip> +short:反查ip对应的域名 (PTR记录),+short可以简略输出,在写批量反查脚本时很有用

Amass

由OWASP维护的安全项目,使用多种开源信息收集和主动侦察技术,拥有更强大的资产发现和子域名挖掘功能。

Amass下分intel、enum、viz、track、db、dns等六个子命令,intel用于发现目标资产,enum用于枚举子域名,viz将枚举结果可视化,track用于比较两次枚举结果的差异,db用于管理Amass收集的信息库,dns用于解析域名。

传送门:https://github.com/OWASP/Amass

eg:

列出所有用于发现目标资产的源和获取方式

amass intel -list


采用主动扫描技术,横向发现sina.com所属机构的更多资产,并注明信息来源

amass intel -active -src -whois -d sina.com


采用主动扫描技术,纵向枚举sina.com子域名,并列出域名对应的ip地址

amass enum -active -ip -d sina.com


amass enum -active -d sina.com -brute -w subdomains-top1million-5000.txt -ip -o results.txt:

注意:Amass多次查询后IP可能被BAN

在线查询工具:https://www.ping.cn/dns

4.DNS域名注册信息

fierce

eg:firece -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt

dnsdict6

eg:dnsdict6 -d4 -t 16 -x sina.com

各类开源字典库:https://github.com/danielmiessler/SecLists


5.whois命令

在线whois查询:

https://www.whois.com/whois/

https://www.namecheap.com/domains/whois/

http://whois.chinaz.com/      站长之家

6.CDN、云平台


CDN及云平台主机并非公司的固有资产,实操时首先要对其进行判断,及时排除或绕过,避免事倍功半。


ping:如果响应返回的主机域名和ping请求的域名不同,则为应用了CDN

nslookup:如果查询的域名有CNAME记录,且解析出有多个IP地址,则为应用了CDN

在线查询工具:

http://ping.chinaz.com/

https://www.ping.cn/dns

如果查询结果为多个ip,或者发现多个地点ping检测返回不同的ip,则为应用了CDN

2.搜索引擎信息收集

1.Shodan

全球最早开放的网络空间搜索引擎,主要针对服务器、网络摄像头、交换机、路由器等网络基础设备的IP做扫描,侧重于主机层面,常见filter:net、city、country、port、os、hostname、server

网址:https://www.shodan.io/

2.Google

inurl:用于搜索网页上包含的URL。这个语法对寻找网页上的搜索,帮助之类的很有用

intitle:限制你搜索的网页标题

intext:搜索网页部分包含的文字内容

site:限制搜索范围的域名

allintitle:搜索所有关键字构成标题的网页

link:可以得到一个所有包含了某个指定URL的页面列表。

例如:link:http://www.google.com 就可以得到所有连接到 Google 的页面

filetype:搜索文件的后缀或者扩展名


eg:

1.搜索网址中包含 admin 字符的网站:inurl:admin

2.搜索网址中包含 login 字符的网站:inurl:login

3.搜索网址中包含 php?id= 字符的网站:inurl:php?id=

4.搜索网址中包含 site:eu.cn  inurl:admin 字符的网站:site:edu.cn  inurl:admin

5.搜索网址中包含 pdf 文档的网站:site:offcn.com  filetype:pdf

6.搜索标题中必须包含 “吕泽昆” 的网站:intitle:xxx

3.公开漏洞信息平台

一些公开漏洞信息平台公布有系统和软件的最新漏洞信息,这对于1day漏洞的挖掘和利用非常有用,常见的平台如下:


Metasploit

基于Metasploit相应模块进行漏洞利用(搜索模块如:search ms14-068)


Exploit-DB

在Kali中searchsploit或在 Exploit-DB官网 搜索Exp (如:ms14-068),在Exp基础上进行漏洞利用(可能需要对Exp进行修改、编译等)


漏洞分析网站

网上有很多漏洞分析的网站,公布有最新漏洞信息、PoC等,如:


知道创宇的漏洞分享学习平台:Seebug

国家信息安全漏洞共享平台:CNVD

非常好用的漏洞信息公开平台:CX Security


2.主动信息收集

1.主机发现

1.二层发现

利用ARP协议发包探测,扫描速度快、可靠,但是不可路由

2.三层发现

1.ping

[-r]是用来记录传出和返回数据包的路由,  ping www.offn.com -r 4

[-l]参数用来设定数据包的大小的,在默认的情况下windows的ping发送的数据包大小为32byte,也可以自定义它的大小,最大限制发送65500byte,否则容易造成主机瘫痪。使用这个命令后,会明显发现时间变长了。

[-n]在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数。

image.gif编辑

2.fping

2.使用fping命令查看局域网中运行了哪些机器

fping -g 192.168.71.1/24 -c 1

3.hping

能够发送几乎任意的tcp/ip包,功能强大但是每次只能扫描一个目标。

hping3 192.168.45.129 --icmp -c 2.

image.gif编辑

4.nmap

1. 探测网络中活跃的主机

nmap -sP 10.0.105.1/24 :探测10.0.105网段中的全部主机。

2. 探测主机系统版本

nmap -O 192.168.45.129 :探测指定IP的相关数据。

3. 探测是否打开指定端口

nmap -p80,443 192.168.61.0/24

nmap -p80 --open 192.168.61.0/24

4.端口服务版本探测:

nmap -p80 -sV 192.168.61.0/24

nmap -p80 -sV 192.168.45.129

-p80 -sV:查看指定网段或指定ip的80端口对应服务的版本信息

5. 全面扫描

nmap -A IP :扫描指定IP的全部内容。

nmap -A -T4 IP :-T4指定扫描过程使用的时序,总共有6个级别(0-5)级别越高扫描速度越快

6. 生成txt报告

nmap -A IP -oN 存储路径:在指定路径下生成相关操作的txt报告。

7.-sn : 只进行主机发现,不进行端口扫描

nmap -sn 192.168.45.1-254

image.gif编辑

image.gif编辑

image.gif编辑

8.扫描一个范围: 端口 1-65535

注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。关闭不需要开的服务有两种方法:

情景 1:你认识这个服务,直接关服务

systemctl stop rpcbind

情景 2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kill 进程,删除文件,接下来以 22 端口为例,操作思路如下:

lsof -i :22 #查看 22 端口正在被哪个进程使用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1089 root 3u IPv4 21779 0t0 TCP *:ssh (LISTEN)

image.gif

通过 ps 命令查找对应的进程文件:

ps -axu | grep 1089
root 1089 0.0 0.1 105996 3744 ? Ss 10:52 0:00 /usr/sbin/sshd -D

image.gif

注:看到进程的文件的路径是/usr/sbin/sshd 。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过 which 和 rpm -qf 来查看命令的来源,如下:

which vim /usr/bin/vim

image.gif

解决:

kill -9 1781

image.gif

3.四层发现

2.端口扫描

1.TCP端口扫描

image.gif编辑

隐蔽扫描—SYN:半连接扫描,应用日志不记录扫描行为。

eg:

nmap -sS  xxxx -p 80,443   -sS表示使用SYN进行半连接扫描

hping3 1.1.1.1 --scan 80,21,25,443 -S

scapy: sr1(IP(dst="192.168.60.3")/TCP(dport=80),timeout=1,verbose=1)

image.gif编辑

全连接端口扫描:

eg:

scapy : sr1(IP(dst="192.168.20.2")/TCP(dport=22,flags='S'))

nmap -sT 1.1.1.1 -p 80,21,25 #默认扫描常用的1000个端口

僵尸扫描:十分隐蔽,可以伪造源地址,但是僵尸机条件必须满足:闲置系统,且IPID递增

扫描192.168.1.0 网段中某些机器可以作为僵尸主机

发现僵尸机:nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse

扫描目标:nmap 192.168.1.63  -sI 192.168.1.54  -P1-100      54是僵尸主机

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

2.TCP端口扫描

1.nmap

eg:namp -sU 192.168.45.129 -p 22

2.scapy

eg:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)

dport:目的端口

sport:来源端口

dst:目的IP

src:来源IP

image.gif编辑

3.使用 scapy 定制数据包进行高级扫描

    • scapy 概述
      • Scapy 是一个可以让用户发送、侦听和解析并伪装网络报文的 Python 程序。这些功能可以用于制作侦测、扫描和攻击网络的工具。
        • scapy 定制 ARP 协议
          • INFO: Can't import matplotlib. Won't be able to plot.
            如果提示 INFO 找不到某个模块可以使用  apt-get install python-matplotlib
            安装时我们输入 exit() 退出 scapy
          • 不过我们还可以看到一些 WARNING 信息,这个信息不影响我们使用。
            我们使用 ARP().display()来查看 ARP 函数的用法
            >>> ARP().display() #查看 ARP 函数的用法,如下
            ###[ ARP ]###
            hwtype= 0x1 硬件类型
            ptype= 0x800 协议类型
            hwlen= 6 硬件地址长度(MAC)
            plen= 4 协议地址长度(IP)
            op= who-has who-has 查询
            hwsrc= 00:0c:29:6a:cf:1d 源 MAC 地址
            psrc= 192.168.1.53 源 IP 地址
            hwdst= 00:00:00:00:00:00
            pdst= 0.0.0.0 向谁发送查询请求
            • image.gif例:定义向 192.168.1.1 发送 arp 请求的数据包
              sr1 函数作用:sr1 函数包含了发送数据包和接收数据包的功能。
            >>> sr1(ARP(pdst="192.168.1.1"))
            Begin emission:
            .........................Finished sending 1 packets.
            ...*
            Received 29 packets, got 1 answers, remaining 0 packets
            <ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=f0:98:38:b8:e0:92
            psrc=192.168.1.1 hwdst=00:0c:29:6a:cf:1d pdst=192.168.1.53 |<Padding
            load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            |>>
            >>> exit() #退出 scapy
            • image.gif注:发现源地址 psrc=192.168.1.1,说明已经收到网关的应答包。
            • scapy 定制 PING 包
            • Scapy 的功能是非常强大的,我们前面只是简单的介绍了他的 ARP 探测方式,下面我们简单讲一下IP/ICMP 的方式
              下面两条命令可以直接看到我们的数据包格式
            ###[ IP ]### 
            version= 4 版本:4,即 IPv4
            ihl= None 首部长度
            tos= 0x0 服务
            len= None 总长度
            id= 1 标识
            flags= 
            frag= 0 标志
            ttl= 64 生存时间
            proto= hopopt 传输控制协议 IPv6 逐跳选项
            chksum= None 首部校验和
            src= 127.0.0.1 源地址
            dst= 127.0.0.1 目的地址
            ICMP().display()
            ###[ ICMP ]### 
            type= echo-request 类型,标识 ICMP 报文的类型
            code= 0 代码
            chksum= None 校验和
            id= 0x0 标识
            seq= 0x0
            • image.gif
            • 注: IP()生成 ping 包的源 IP 和目标 IP ,ICMP() 生 ping 包的类型。使用 IP()和 ICMP()两个函数,可以生成 ping 包,进行探测。
            • 思路:
              1、修改 IP 包头的 dst,也就是我们的目的地址
              2、拼接上 ICMP 的数据包类型
              3、使用 sr1()进行发送数据包并接收数据包
            >>> sr1(IP(dst="192.168.1.1")/ICMP(),timeout=1)
            Begin emission:
            .Finished sending 1 packets.
            *
            Received 2 packets, got 1 answers, remaining 0 packets
            <IP version=4 ihl=5 tos=0x0 len=28 id=32131 flags= frag=0 ttl=64 proto=icmp
            chksum=0x79d7 src=192.168.1.1 dst=192.168.1.53 options=[] |<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'
            |>>>
            • image.gif
            • scapy 定制 TCP 协议 SYN 请求
            • tcp 三次握手过程中 flags 的标记 image.gif编辑
            • #查看 TCP()函数的用法
              >>> TCP().display()
              ###[ TCP ]###
              sport= ftp_data TCP 源端口
            • #查看 TCP()函数的用法
            ###[ 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= [] 选项
            • image.gifsr1(IP(dst="192.168.1.1")/TCP(flags="S" ,dport=80),timeout=1)
              flags=”S”表示 SYN 数据包
              dport=80 表示目标端口 80
              image.gif编辑
              我们的到一个 flags=SA 的数据包。SA 标志即 SYN+ACK。我们收到服务器 tcp 三次握手中的第二个包,能收到回应,表示端口开放。
              注:这种基于 tcp 的半链接扫描,更隐密,更不容易被发现。
            相关文章
            |
            2月前
            |
            机器学习/深度学习 JSON 算法
            实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
            本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
            709 3
            实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
            |
            2月前
            |
            测试技术
            自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
            本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
            109 2
            自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
            |
            2月前
            |
            Java 关系型数据库 MySQL
            自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
            这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
            53 1
            自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
            |
            2月前
            |
            安全
            红队测试方法论-课程笔记
            红队测试方法论-课程笔记
            红队测试方法论-课程笔记
            |
            2月前
            |
            机器学习/深度学习 弹性计算 自然语言处理
            前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
            llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
            114 1
            |
            2月前
            |
            计算机视觉
            目标检测笔记(二):测试YOLOv5各模块的推理速度
            这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
            111 3
            |
            2月前
            |
            人工智能 算法 测试技术
            自动化测试项目实战笔记(二):解决验证码识别问题
            这篇文章介绍了三种自动化测试中验证码识别的方法:使用Python的pytesseract和PIL模块、利用第三方API如万维易源,以及使用开源的ddddocr库,还提到了一些注意事项,比如如何获取验证码区域的截图。
            82 2
            |
            2月前
            |
            JSON 算法 数据可视化
            测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
            这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
            71 0
            测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
            |
            2月前
            |
            机器学习/深度学习 并行计算 数据可视化
            目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
            这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
            128 0
            目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
            |
            2月前
            |
            机器学习/深度学习 JSON 算法
            语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
            本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
            256 0
            语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)