网络安全基础(一) - 信息收集
信息收集篇
-
渗透的本质就信息收集的过程
- 通过各种手段获取网站的信息
- 如域名注册邮箱,dns信息,子域名等
- 通过各种手段获取网站的信息
-
什么是 whois查询
- 是用来查询域名的IP以及所有者等信息的传输协议,包括域名是否已被注册、域名当前所有者、所有者联系方式、注册日期、过期日期、域名状态、DNS解析服务器等
-
在kali终端 使用whois查询
- whois 域名
一、常见网站架构
- php + mysql + win环境/linux环境(apache/nginx)
- aspx + access/mysql + win
- jsp + oracle/mysql/ + win/linux
- tomcat
- php + postgresql + linux
二、文件和目录扫描
- 网站后台扫描工具都是利用后台目录字典进行爆破扫描,字典越多,扫描到的结果也越多
1. windows工具
1.1 御剑后台扫描工具
1.2 dirbuster
- 一款专门用于探测网站目录和文件(包括隐藏文件)的工具
- 支持全部的Web目录扫描方式。它既支持网页爬虫方式扫描,也支持基于字典暴力扫描,还支持纯暴力扫描。该工具使用Java语言编写,提供命令行(Headless)和图形界面(GUI)两种模式。其中,图形界面模式功能更为强大。用户不仅可以指定纯暴力扫描的字符规则,还可以设置以URL模糊方式构建网页路径。同时,用户还对网页解析方式进行各种定制,提高网址解析效率。
-
设置fuzz的时候,因为{dir}是个变量,可以自由变换。
- /{dir} http://xxx.com/{dir} 这个{dir} 对应的就是字典的每一行进行爆破
-
可以加目录
- /admin/{dir}.php 这样就是爆破admin目录下所有php文件
-
结果
1.3 Pker
- 多线程后台极速扫描工具
- 支持ASP、PHP、ASPX、JSP、包括自定义扫描软件包含了常见后台地址、目录、数据库、上传地址、其他地址的收录,支持二级目录或者多级目录的扫描
2. linux(kali)下的工具
三、子域名收集
- 根域名:
- moonsec.com
- 子域名:
- 如 www.moonsec.com
- 子域名通常是为了满足大型公司不同的产品或业务而在主域名基础上发展而来。子域名一般会根据站点不同性质在主域名前面加上不同的前缀构成,通常比主域名多一个点或两个点。只要在主域名前面加上前缀的都是该主域名的子域名,子域名又能分为二级子域名、三级子域名、还有多级子域名。子域名不仅仅只是二级域名,三级域名也可称为二级域名和一级域名的子域名。
- 如 http://1.www.sfn.cn 和 http://2.www.sfn.cn 这样的三级域名也同样可以成为http://www.sfn.cn和http://sfn.cn的子域名
1. Layer子域名挖掘机4.2纪念版
- Layer子域名挖掘机是一款域名查询工具,可提供网站子域名查询服务
- 端口
- 80 - web http服务
- 443 - ftp
- 扫描后可以导出
2. subDomainsBrute
-
介绍
- https://cloud.tencent.com/developer/article/1595057
- 用小字典递归地发现三级域名,四级域名、五级域名等域名字典较为丰富,小字典就包括1万5千条,大字典多达6万3千条默认使用114DNS、百度DNS、阿里DNS这几个快速又可靠的Public DNS查询,可修改配置文件添加DNS服务器(在dict里面可以进行添加)
- 自动去重泛解析的域名,当前规则: 超过2个域名指向同一IP,则此后发现的其他指向该IP的域名将被丢弃)
-
安装相关python库,看Readme
-
默认使用方式,cmd进入目录
- subDomainsBrute.py 域名
- subDomainsBrute.py aliyun.com
- subDomainsBrute.py 域名
-
使用指定字典
- subDomainsBrute.py 域名 -f 字典名 -o 输出的文件名
- python subDomainsBrute.py aliyun.com -f subnames_full.txt -o aliyun.com.txt
- subDomainsBrute.py 域名 -f 字典名 -o 输出的文件名
- 超级pin
3. wydomain-wydomain2
-
介绍
- https://www.freebuf.com/sectool/205207.html
- wydomain是猪猪侠开发的一款子域名信息搜集工具,因其枚举速度快,结果准确,成为不少白帽居家旅行的必备神器。工具主要分为两个模块,dnsburte模块和wydomain模块,dnsburte模块通过用户自定义字典发送dns查询,最后筛选出符合条件的域名。而wydomain模块则是通过调用多个第三方网站的公开api获取子域名数据。
-
根据REMADE安装
- python dnsburte.py -h
-
用法
- python dnsburte.py -d aliyun.com -f dnspod.csv -o aliyun.log
-
有一个报错:
Sublist3r
- Sublist3r是一个python版子域发现工具,其设计原理是基于通过使用搜索引擎,从而对站点子域名进行列举,旨在使用来自公共资源和暴力技术的数据枚举网站的子域。公共资源包括广泛的流行搜索引擎,如谷歌,雅虎,必应,百度,Ask以及Netcraft,Virustotal,ThreatCrowd,DNSdumpster和ReverseDNS,以发现子域名。
抓包分析请求返回值 - 右键(检查)
网站获取子域名
- 站长帮手
- links 等在线查询网站
四、信息反查
- 通过域名查询注册人和注册邮箱,再通过注册人或注册邮箱反查网站和注册人
- 用途
- whois信息
- 邮箱反查
- ip反查
- 资产反查
- 域名查询ip
- c 段查询
- 0 - 254 ip反查域名
工具
-
kali - whois查询
-
站长工具 - whois查询
-
爱站
- 反查资产可以用天眼查
五、端口扫描
1. nmap
黑客工具之Nmap详细使用教程 - 掘金 (juejin.cn)
-
介绍
- 一款非常强大的主机发现和端口扫描工具,而且nmap运用自带的脚本,还能完成漏洞检测,同时支持多平台
-
功能
- 主机探测
- 端口扫描
- 版本检测
- 系统检测
- 支持探测脚本的编写
-
应用场景
- 通过对设备或者防火墙的探测来审计它的安全性
- 探测目标主机所开放的端口
- 通过识别新的服务器审计网络的安全性
- 探测网络上的主机
-
端口扫描工具,即借助工具,试图了解所扫描IP提供的计算机网络服务类型(网络服务均与端口号相关),从而发现攻击弱点,常见服务对应端口号:
服务 端口号
主机探测的用法
- 主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。
iR 随机选择目标
-iL 从文件中加载IP地址
-sL 简单的扫描目标
-sn Ping扫描-禁用端口扫描
-Pn 将所有主机视为在在线,跳过主机发现
-PS[portlist] (TCP SYN ping) 需要root权限
-PA[portlist] (TCP ACK ping)
-PU[portlist] (UDP ping)
-PY [portlist] (SCTP ping)
-PE/PP/PM ICMP回显,时间戳和网络掩码请求探测
-PO[协议列表] IP协议Ping
-n/-R 从不执行DNS解析/始终解析[默认:有时]
--dns-servers 指定自定义DNS服务器
--system-dns 使用OS的dns服务器
--traceroute 跟踪到每个主机的跃点路径
- nmap -sn 公网ip
- Nmap会发送四种不同类型的数据包来探测目标主机是否在线
- 只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误
- nmap -sn 内网ip
- 发送arp请求包探测目标ip是否在线,如果有arp回复包,则说明在线。此命令可以探测目标主机是否在线,如果在线,还可以得到其MAC地址。但是不会探测其开放的端口号
- 几种网络层协议
-
arp
- 地砖解析协议,通过目标主机的ip查询其MAC地址
-
icmp
- TCP/IP协议族的子协议,用于在IP主机、路由器之间传递控制消息(控制消息指网络通不通、主机可否达、路由是否可用等)
- 常用于差错控制、拥塞控制和传输控制
- 使用场景
- ping命令
- tracert命令
-
端口扫描的一些用法
- 端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况
1. 扫描方式选项
-sS 使用TCP的SYN进行扫描
-sT 使用TCP进行扫描
-sA 使用TCP的ACK进行扫描
-sU UDP扫描
-sI Idle扫描
-sF FIN扫描
-b<FTP中继主机> FTP反弹扫描
TCP SYN 扫描(-sS)
这是Nmap默认的扫描方式,通常被称作半开放扫描。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么可以判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么可以判断该端口被屏蔽了。因为该方式仅发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
TCP connent 扫描(-sT)
TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标主机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑使用的方式
TCP ACK 扫描(-sA)
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
TCP FIN/Xmas/NULL 扫描(-sN/sF/sX)
这三种扫描方式被称为秘密扫描,因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN 包或Xmas tree包或NULL包,如果收到对方的RST回复包,那么说明该端口是关闭的;没有收到RST包说明该端口可能是开放的或者被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有的flags都为0的TCP包。
UDP扫描(-sU)
UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。
其他方式(-sY/-sZ)
除了以上几种常用的方式外,Nmap还支持多种其他的探测方式。例如使用SCTP INIT/Cookie-ECHO方式是来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(tcp/udp/icmp/sctp等等);使用idle scan方式借助僵尸主机来扫描目标主机,以达到隐蔽自己的目的;或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐蔽自己的目的
2. 端口参数与扫描顺序
-p <port ranges>: 扫描指定的端口
实例: -p 22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)
-F: Fast mode – 快速模式,仅扫描TOP 100的端口
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件
服务/版本探测
-sV 探测服务/版本信息
--version-intensity 设置版本扫描强度(0-9)
--version-all 尝试每个强度探测
--version-trace 显示详细的版本扫描活动(用于调试)
时间和性能
--host-timeout 设置超时时间
--scan-delay 设置探测之间的时间间隔
-T <0-5> 设置时间模板,值越小,IDS报警几率越低
防火墙/IDS规避和欺骗
-f 报文分段
-s 欺骗源地址
-g 使用指定的本机端口
--proxies <url,port> 使用HTTP/SOCK4代理
-data<hex string> 想发送的数据包中追加自定义的负载
--data-string 将自定义的ACSII字符串附加到发送数据包中
--data-length 发送数据包时,附加随机数据
--spoof-mac MAC地址欺骗
--badsum 发送带有虚假TCP/UNP/STCP校验和的数据包
输出
-oN 标准输出
-oX XMl输出
-oS script jlddi3
-oG grepable
-oA 同时输出三种主要格式
-v 信息详细级别
-d 调试级别
--packet-trace 跟踪发送和接收的报文
--reason 显示端口处于特殊状态的原因
--open 仅显示开放的端口
杂项
-6 启动Ipv6扫描
-A 启动Os检测,版本检测,脚本扫描和traceroute
-V 显示版本号
-h 帮助信息
-
版本检测扫描
- nmap -Pn -sV 域名(或者IP)
-
nmap -Pn -sV 域名(或者IP) -oN 文件名
- 保存的文件在用户目录下
-
nmap -Pn -sV 域名(或者IP)-O
- 查看操作系统信息
-
nmap -Pn -sV 域名(或者IP)-A
- 操作系统描述,版本描述,路由的显示
-
nmap all 域名(或者IP)
- 全部端口扫描
-
nmap -p 0-65535 域名(或者IP)
- 部分端口扫描
-
批量IP进行端口扫描
- 在用户目录下创建文件ip.txt并输入多个要进行端口扫描的IP地址
- nmap -v -A -F -iL ip.txt -oX target_f.xml
- -v 打印详细信息
- -A 显示路由等信息
- -F 快速扫描
- 将结果输出到target_f.xml ,供其他工具进行分析
-
nmap -v -A -F -iL ip.txt -oN target_f.txt
- 保存成文本
-
udp扫描 - 很少用到
2. 御剑工具扫描
- 御剑无字典大小限制版本
六、 web信息刺探
-
cms - Content Management System
- 内容管理系统,顾名思义,它主要是为了方便发布网络内容而存在的一体化Web管理系统。
- 相当于网站模板,如果cms出现bug,很多网站使用了这个cms,那么就相当于很多个漏洞
-
web指纹
- 应用程序含有的特征代码就是该程序的指纹。如同生物的指纹就是生物的特征一样
- 作用
- 识别出相应的cms或者web容器,才能查找出相关漏洞
-
网站类型
- 独立开发(网络上唯一)
- cms二次修改
- cms套用模板
-
敏感文件
- 网站的登录接口,后台,未被保护的页面,备份文件等
- Insigntscan
- https://github.com/AnthraX1/InsightScan
- python2 scanner.py 8.210.121.117/24 -p 80,8080 -t 20
- 扫描指定开放端口
- python2 scanner.py 8.210.121.117/24 -S -t 20
- 扫描服务
- HBSv1.0
- 获取IP头信息工具
七、邮箱信息收集
-
theHarvester
-
下载安装
-
前提:安装python3
-
进入用户下的tmp路径
-
git clone https://github.com/laramies/theHarvester cd theHarvester python -m pip install -r requirements/dev.txt python -m pip install -r requirements/base.txt
-
- 修改搜索引擎的key
- whois 域名
- 也是可以看到邮箱信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现