信息收集是从公开可用资源获取所有相关信息的一种方式,是与目标网络和设备交互过程的一部分,涉及开源情报(Open Sourcew Intelligence,OSINT)。在进行渗透测试时信息收集是整个流程的第一步,在实际测试目标网络前进行的,收集的结果会给出需要额外收集的方向或者直接指出接下来在漏洞利用截断可利用的漏洞。信息收集可以分为两种类型:被动侦察(passive reconnaissance)和主动侦察(reconnaissance)。
被动侦察一般是指分析公开的信息,这些信息包括目标本身的信息、在线的公共资源信息。在获取这些信息是,测试者不会与目标产生交互,请求与活动不会被日志记录,无法直接定位测试者。因此在被动信息收集中应当尽可能减少与目标的交互。
主动侦察为了尽可能多的收集与目标有关的信息以帮助攻击实施,主动侦察是建立在被动侦察之上,侧重于使用探测来到达目标的路径,暴露目标的攻击面(attack surface)。一般来说,复杂的系统有更大的攻击面并且每个面都可能被利用和再利用。主动侦察会产生更多更有用的信息,但是由于与目标系统的相互作用可能会被记录,并且可能会通过防火墙、入侵检测系统(IDS)、入侵阻止系统(IPS)等防护设备触发报警,所以攻击者在获取到更多有用的信息的同时,被检测到的风险同样增加!
被动信息收集并不与目标网络产生直接的交互,攻击者的源IP地址和活动不会被日志记录,被动信息收集可以看作与目标的正常交互
OSINT是指从公共的资源进行信息收集。OSINT可以分为进攻型和防守型。进攻性需要分析对防范目标进行攻击所需的所有数据,而防御型只是收集以前的数据与目标相关的其他安全事件。
需要收集的信息依赖于渗透测试的初始目标。
l域名:域名是OSINT中最关键的元素,外部场景中识别攻击者或渗透测试人员的目标是通过域名开始的。
lDNS收集与路由映射:一旦确定目标在线,下一步就是识别目标的IP地址和路由。识别谁拥有一个特定域或一系列IP地址,定义域名的DNS信息和标识目标的IP地址。
Maltego社区版随着kali Linux发行,是一款强大的信息收集GUI工具集,通过各种方法收集个人在互联网上公开的信息,还能枚举域名系统,破解普通DNS;在kali终端输入maltego访问程序。
产品类型:
Maltego XLMaltego XL是最高的解决方案,可以运行10000个以上的可视化图例。
Maltego Classic这是商业版本,可以可视化10000个以下图形实例。
Maltego CE社区版免费,功能受限,可以转换图形,无法使用任何商业目的。
Maltego CaseFileMaltego CaseFile免费,但只能手动创建图,而且不能转换,可用于商业目的。我们选择社区版
下一步
单击finsh就可以使用Maltego了。新建任务,输入域名:
右击目标选择模块进行transform,
扩展结果:
被Google访问过的东西都会被备份为快照放在Google缓存中,通常情况下可以根据搜索查询Google快照来获取目标敏感信息。即便是目标网站已经从互联网上消失,利用快照仍能为攻击者提供大量信息,如用户名、hash、密码策略、邮箱等。
攻击者提取从网站获取的大量数据集存储到本地文件系统中。
Python脚本TheHarvester利用搜索引擎进行信息收集。能够收集电子邮件账号、用户名、主机名和子域名等信息。它通过Google、Bing、PGP、LinkedIn、Baidu、Yandex、People123、Jigsaw、Shodan等公开资源整理收集这些信息。这些信息将在后期的渗透测试阶段发挥巨大的作用。
-b:用于确定提取信息的来源。
baidu,bing, bingapi, censys, crtsh, dogpile,
Google,google-certificates, googleCSE, googleplus, google-profiles,linkedin, netcraft, pgp, threatcrowd,
twitter, vhost, virustotal, yahoo等等
-s:从结果X开始(默认为0)
-v:通过DNS解析验证主机名,搜索虚拟主机
-f:将结果保存到HTML和XML文件中(两者都)
-n:对发现的所有范围执行DNS反向查询
-c:对域名执行DNS蛮力
-t:执行DNS TLD扩展发现
使用这个DNS服务器
-p:端口扫描检测到的主机并检查是否被接管(80,443,22,21,8080)
limit:限制results:结果
-l限制并发搜索结果
-d 后跟服务器域名 163.com hotmail.com gmail.com
例子:
python2 theharvester.py -d qq.com -l 500 -b baidu myresults.xml
收集的邮箱
主机
Shodan让攻击者通过过滤语法链接到互联网的设备。例如过滤互联网上运行IIS6.0的服务器
也可以利用scan.io api或censys.io作相关信息采集。它们能够提供IPv4地址、网站认证的更多信息以及其他存储的信息。https://censys.io/
Google是人们搜索任何未知动,收集相关主题的通用工具。通过dork脚本利用Google会有意想不到的结果。
防守型OSINT通常可以看到已经被掌控的内容,根据这些数据可以很方便的初步识别到已经掌握的类似目标。大多数组织只修复受影响的平台或主机,很多时候并没有考虑到其他类似的环境。防守型OSINT大致在三个地方搜索:
①暗网:暗网是tor服务器及客户端之间存在的加密网络,他提供一些数据库和一些web服务可用于信息收集。
②安全漏洞:指通过绕过底层安全机制,未经授权访问数据、应用程序、服务、网络或设备的任何事件。
http://zone-h.com,https://haveibeenpwned.com
③威胁情报:威胁情报是控制、计算、提炼一个组织的潜在信息,信息包括威胁、渗透、攻击一个组织的内容。这种情报的主要目的是确保组织意识到当前的风险,如(APT,0 DAY,其他严重的外部威胁)
主动信息收集涉及直接查询或其他交互活动,这些活动可能会触发系统警报,被攻击的目标也能获取攻击者的IP地址和活动信息
直接与目标发生交互使测试人员的测试时间、数据戳、源IP地址及其他附加信息都直接暴露在目标日志上。所以即便是主动信息收集,也要尽量采用隐形技术以降低被发觉的概率。隐形技术侦察要做到以下几点:
伪装工具签名逃避检测和触发警报
将攻击隐藏于合法流量内
修改攻击,隐藏其流量的来源和类型
使用非标准的流量类型或加密
隐形扫描技术包括以下几个方面:
调整源IP和工具识别设置
修改数据包参数
使用代理池匿名访问目标
在测试之前应当尽量禁用或关闭kali不必要的服务。例如:本地运行的DHCP服务可能与目标系统产生交互从而被记录,甚至发出报警。
一些渗透工具在使用时用一个标识序列标记他们的数据包,这样由一个特定的测试工具发起的事件可以直接与系统的事件日志进行比较,可以确定网络侦测情况并响应攻击,对测试后分析系统的事件日志由很大的帮助。但是这些工具的标识序列数据包也有可能触发入侵检测系统,为了绕过防护系统需要修改这标识数据包。例如MSF修改user-agent:
在Metasploit框架中,可以通过修改auxiliary/fuzzers/http/http_form_field模块选项以修改MSF的user-agent,达到伪造Google索引蜘蛛(Googlebot)的目的。
msf5 > use auxiliary/fuzzers/http/http_form_field
msf5 auxiliary(fuzzers/http/http_form_field) > set useragent
useragent => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
msf5 auxiliary(fuzzers/http/http_form_field) > set useragent Googlebot/2.1
useragent => Googlebot/2.1
常用工具user-agent修改:
使用wireshark工具捕获攻击者和目标虚拟机之间的信息,搜索抓包(packet capture)文件,寻找测试工具产生的关键字(工具名称、供应商、证书序列号等)。可以定位该测试工具的特征数据包。
①sqlmap
默认情况下sqlmap的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可以使用参数--user-agent 修改UA:
sqlmap -u www.xx.com/index.php?id=1 --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
也可以使用--random-agent使用随机选定的UA:
sqlmap -u www.xx.com/index.php?id=1 --random-agent
②nmap
通过--script-args参数修改user-agent
nmap 192.168.1.1 --script-args
③dirbuster。
Dirbuster默认的UA:
DirBuster-1.0-RC1 (http://www.owasp.org/index.php/Category:OWASP_DirBuster_Project)
修改配置即可:options>advanced options>http options ,修改为百度小蜘蛛:
User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
对目标进行扫描,即向目标发送定义的数据包,利用返回的数据包获取信息。常见的工具如nmap。扫描的注意事项:
尽可能缩小发送数据包的数和量
尽量避免与目标系统直接连接的扫描,尽量避免可能泄露数据的扫描。如使用SYN或非常规数据包扫描
随机化或欺骗分组设置源IP、端口、MAC地址
减小扫描速度以减缓目标端的包
通过包的分解或附加随机数据该百年包的大小,混淆设备对数据包的检测
例如nmap史上最慢扫描:
nmap --spoof-mac-Cisco --data-length 24 -T paranoid --max-hostgroup 1 --max-parallelism 10 -Pn -f -D 10.1.20.5,RND:5,ME --v -n -sS -sV -oA /desktop/pentest/nmap/out -p T:1-1024 --random-hosts 10.1.1.10 10.1.1.15 127.0.0.1
Tor提供免费接入的匿名网络代理,他通过保护用户的IP流源地址和目的地址抵御流量分析。Privoxy作为Tor的web代理服务器,利用过滤技术在保护隐私的同时将数据包发送给目标服务器。
1.安装tor
apt-get update 更新软件源中的所有软件列表。
apt-get upgrade 更新软件
apt-get dist-upgrade 更新系统版本
apt-get install tor
2.配置proxychains.conf文件
该文件规定了使用在tor网络系统上的测试系统使用代理服务器的数量和顺序。禁用strict_chains,启用dynamic_chains,防止proxychain失效保证连接被路由。
3.编辑[ProxyList]部分,确保socket代理存在
4.启动Tor
service tor start
5.查看tor状态,验证tor是否提供匿名连接
service tor status
6.匿名访问
proxychains firefox www.baidu.com
7.主义事件
Tor提供匿名服务,但它不保证完全隐私。出口节点能够嗅出流量,有可能访问用户凭据
ProxyChains不处理UDP流量
部分程序无法在这样的环境下运行。如MSF,另外nmap的SYN扫描会被ProxyChains终止,调用连接扫描可能会泄露信息
浏览器的某些应用程序可能会获取真实IP,如ActiveX、PDF、Flash、Java、QuickTime、RealPlay
ProxyChains会从tor IP列表中随机获取IP地址,很难从源头跟踪流量。在/etc/proxychains.conf文件中禁用dynamic_chains启用ramdom_chain可解决此问题。
DNS侦察,识别谁拥有一个特定域或一系列IP地址,定义实际域名的DNS信息和目标的IP地址,以及在测试者与最终目标之间的路由。这些信息有一部分是开源的,另一部分则来自于第三方实体(如DNS注册机构)。
通过whois命令识别分配给目标网站的地址,允许查询到互联网中相关的信息,例如注册用户的域名、IP地址、注册用户姓名、物理地址、电话号码、邮箱地址、DNS服务器名称。当然也有一些实体为了保护隐私会隐藏数据。如.gov和.mil可能不会被公共域访问。注意:执行查找的站点可能会记录查询的IP地址。
爱站https://whois.aizhan.com/baidu.com/
DMitry是常用的综合侦察命令行工具,可以执行whois查询操作,检索netcraft.com信息,搜索子域、电子邮件地址,TCP扫描等等。
dmitry -winsepo output.txt www.cyberhia.com
DMitry工具能进行综合的信息收集,但是无法扩展。recon-ng是结合了主动收集和被动收集的开源框架,和MSF类似,它将cmd解释器分为多个模块,每个模块执行特定任务。recon-ng工具利用第三方API进行一些评估,所以采用recon-ng进行的活动可能会被第三方追踪。可自定义User-Agent
Kali已经默认安装recon-ng工具,更新安装apt-get install recon-ng。然后在终端输入recon-ng启动:
命令 options list 显示当前设置,通过 options set 可以更改参数(如域名解析服务器、代理、线程)
marketplace refresh 更新模块列表
marketplace info all 可以所有模块包括描述
marketplace search hackertarget 搜索模块例如 “hackertarget”
加载指定模块:modules load+模块名称。相关模块的工作原理:info,必要时获取API密钥
一旦模块被加载,就可以使用options set source sina.com命令设置选项,run命令进行执行。
3.3.2.1.为recon-ng添加API密钥,如shodan
1.添加密钥
keys add shodan_api
2.搜索shodan模块
marketplace search shodan
3.如果没有安装该模块,先安装
marketplace install recon/hosts-ports/shodan_ip
4.加载模块
modules load recon/netblocks-hosts/shodan_net
options set SOURCE 192.168.1.1/24
run