信息收集 - 渗透测试重中之重

0x00 通过DNS信息收集

收集:whois查询、站长查询、DNS域传输漏洞、DNS历史记录解析

CDN识别

CDN绕过

  1. 查子域名

  2. 历史DNS记录

  3. DNSAB

https://dnsdb.io/zh-cn/

host:www.ichunqiu.com   得到域名的历史解析的IP地址

  1. 微步在线

https://x.threatbook.cn/

  1. 查看dns信息

http://viewdns.info/

https://viewdns.info/iphistory/?domain=www.ichunqiu.com
获取域名的dns历史解析IP的记录

  1. Get Ping MTR TraceRoute Dns Cdn LDns

http://www.17ce.com/

  1. IP138查询网

https://site.ip138.com/

  1. securitytrails

https://securitytrails.com

https://securitytrails.com/domain/www.ichunqiu.com/dns 历史DNS查询

https://sitereport.netcraft.com/?url=www.ichunqiu.com   Netcraft查询域名相关信息

  1. 检索
  1. 国外访问

  2. 直接从CDN本身入手(CDN注册

  3. Mx记录或邮件很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等。而且一般的邮件系统很多都是在内部,没有经过CDN的解析。可在邮件源码里面就会包含服务器的真实IP。(RSS订阅或注册用户发送邮箱)直接暴露真实IP地址。

  4. 网络空间引擎搜索法:zoomeye、fofa、shodan

  • 通过这些公开的安全搜索引擎爬取得历史快照,一些主要特征总结如下:

  • 特有的http头部(如server类型、版本、cookie等信息)

  • 特定keyword(如title、css、js、url等)

  • 特定的IP段搜索(如fofa支持C段搜索)

  • shodan 搜索引擎shodan网络搜索引擎偏向网络设备以及服务器的搜索

https://www.shodan.io/

  • 搜索语法
hostname:搜索指定的主机或域名,例如hostname:"google"
port:搜索指定的端口或服务,例如port:"21"
country:搜索指定的国家,例如country:"CN"
city:搜索指定的城市,例如city:"Hefei"
org:搜索指定的组织或公司,例如org:"google"
isp:搜索指定的ISP供应商,例如isp:"China Telecom"
product:搜索指定的操作系统/软件/平台,例如product:"Apache httpd"
version:搜索指定的软件版本,例如version:"1.6.2"
geo:搜索指定的地理位置,例如geo:"31.8639, 117.2808"
before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如before:"11-11-15"
net:搜索指定的IP地址或子网,例如net:"210.45.240.0/24"
  • 钟馗之眼 钟馗之眼搜索引擎偏向web应用层面的搜索。

https://www.zoomeye.org/

  • 搜索语法
app:nginx           组件名
ver:1.0             版本
os:windows          操作系统
country:"China"     国家
city:"hangzhou"     城市
port:80             端口
hostname:google     主机名
site:thief.one      网站域名
desc:nmask          描述
keywords:nmask'blog 关键词
service:ftp         服务类型
ip:8.8.8.8          ip地址
cidr:8.8.8.8/24     ip地址段
  • FoFa搜索引擎FoFa搜索引擎偏向资产搜索

https://fofa.so

  • 搜索语法
title="abc"       从标题中搜索abc。例:标题中有北京的网站。
header="abc"      从http头中搜索abc。例:jboss服务器。
body="abc"        从html正文中搜索abc。例:正文包含Hacked by。
domain="qq.com"   搜索根域名带有qq.com的网站。例:根域名是qq.com的网站。
host=".gov.cn"    从url中搜索.gov.cn,注意搜索要用host作为名称。
port="443"        查找对应443端口的资产。例:查找对应443端口的资产。
ip="1.1.1.1"      从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。
protocol="https"  搜索制定协议类型(在开启端口扫描的情况下有效)。例:查询https协议资产。
city="Beijing"    搜索指定城市的资产。例:搜索指定城市的资产。
region="Zhejiang" 搜索指定行政区的资产。例:搜索指定行政区的资产。
country="CN"      搜索指定国家(编码)的资产。例:搜索指定国家(编码)的资产。
cert="google.com" 搜索证书(https或者imaps等)中带有google.com的资产。

高级搜索:
title="powered by" && title!=discuz
title!="powered by" && body=discuz
(body="content=\"WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/") ) && host="gov.cn"

  • Dnsdb搜索引擎dnsdb搜索引擎是一款针对dbs解析的查询平台。

https://www.dnsdb.io

  • 搜索语法

DnsDB查询语法结构为条件1 条件2 …, 每个条件以空格间隔, DnsDB 会把满足所有查询条件的结果返回给用户。

域名查询条件
域名查询是指查询顶级私有域名所有的DNS记录, 查询语法为domain:.
例如查询google.com 的所有DNS记录: domain:google.com.
域名查询可以省略domain:.

主机查询条件
查询语法:host:
例如查询主机地址为mp3.example.com的DNS记录: host:map3.example.com
主机查询条件与域名查询查询条件的区别在于, 主机查询匹配的是DNS记录的Host值

按DNS记录类型查询
查询语法: type:.
例如只查询A记录: type:a
使用条件:必须存在domain:或者host:条件,才可以使用type:查询语法

按IP限制
查询语法: ip:
查询指定IP: ip:8.8.8.8, 该查询与直接输入8.8.8.8进行查询等效
查询指定IP范围: ip:8.8.8.8-8.8.255.255
CIDR: ip:8.8.0.0/24
IP最大范围限制65536个
条件组合查询的例子
查询google.com的所有A记录: google.com type:a
  1. 查询HTTPS证书

https://censys.io/

  1. 利用网站漏洞(SSRF反弹shell等其他漏洞)

  2. 敏感文件泄露(info.php、phpinfo.php探针之类)

  3. 全网扫描(Nmap、masscan扫整个互联网)

0x01 Fuzz子域名

  • 爬取方法:爬取页面a标签、js的url(jsfinder)、form表单的action、源代码的注释url等方法
  1. 工具:Subdomainsbrute、Layer子域名挖掘机5.0、Oneforall、wwwscan、jsfinder、御剑、webrobot2

  2. 爬行:burpsuite、轻量级网站目录爬行、awvs、xray

  3. 猜测:猜测手工测试子域名

0x02 指纹识别

  1. 特定文件的MD5

一些网站的特定图片文件、js文件、CSS等静态文件,如favicon.ico、css、logo.ico、js等文件一般不会修改,通过爬虫对这些文件进行抓取并比对md5值,如果和规则库中的Md5一致则说明是同一CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的CMS会修改这些文件。获得哈希值,工具对比。

  1. 正常页面或错误网页中包含的关键字

先访问首页或特定页面如robots.txt等,通过正则的方式去匹配某些关键字,如Poweredby Discuz、dedecms等。或者可以构造错误页面,根据报错信息来判断使用的CMS或者中间件信息,比较常见的如tomcat的报错页面。

  1. 请求头信息的关键字匹配
  • 根据网站response返回头信息进行关键字匹配 ,whatweb和Wappalyzer就是通过banner信息来快速识别指纹,之前fofa的web指纹库很多都是使用的这种方法,效率非常高,基本请求一次就可以,但搜集这些规则可能会耗时很长。而且这些banner信息有些很容易被改掉。

  • 根据responseheader 一般有以下几种识别方式:查看http响应报头的X-Powered-By字段来识别;根据Cookies来进行判断,比如一些waf会在返回头中包含一些信息,如360wzws、Safedog、yunsuo等;

  • 根据header中的Server信息来判断 ,如DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm等

  • 根据WWW-Authenticate进行判断 ,一些路由交换设备可能存在字段,如NETCORE、huawei、h3c等设备。

  1. 部分URL中包含的关键字

比如wp-includes、dede等URL关键特征通过规则库去探测是否有相应目录,或者根据爬虫结果对链接url进行分析,或者对robots.txt文件中目录进行检测等等方式,通过url地址来判别是否使用了某CMS,比如wordpress默认存在wp-includes和wp-admin目录,织梦默认管理后台为dede目录,solr平台可能使用/solr目录,weblogic可能使用wls-wsat目录等。以及meta标签中的content字段

  1. 开发语言的识别
  • web开发语言一般常见的有PHP、jsp、aspx、asp等,常见的识别方式有:通过爬虫获取动态链接进行直接判断是比较简便的方法。

  • 通过X-Powered-By进行识别比较常见的有X-Powered-By:ASP.NET或者X-Powered-By: PHP/7.1.8

  • 通过Set-Cookie进行识别这种方法比较常见也很快捷,比如Set-Cookie中包含PHPSSIONID说明是php、包含JSESSIONID说明是java、包含ASP.NET_SessionId说明是aspx等。

  1. 指纹识别

很多网站会使用已有的内容管理系统(CMS),或者是对CMS进行二次开发,如果网站使用了CMS,我们可以对网站进行CMS识别,检测其版本,然后利用已知的漏洞进行攻击。

0x03 安全防护判断

cdn识别

有些云cdn自带防护功能;http包:有些respond带防护软件指纹;看他的页面,如果访问的时候带入一些威胁payload语句,也会返回一些特征;

响应里的cookie信息,有的防护会体现在cookie里,比如Citrix,Netscaler,Yunsuo WAF,safedog;

高频访问可判断是否有频率限制;

header信息,比如Anquanbao WAF,AmazonAWSWAF;

报错信息:单IP请求时间段内Webserver返回http状态404比例, 扫描器探测敏感目录基于字典,找不到文件则返回404;指纹识别;隐藏的链接标签等()

识别举例

一些WAF在请求中设置自己的cookie(例如Citrix,Netscaler,YunsuoWAF,safedog)

有些人将自己与单独的标头关联(例如AnquanbaoWAF,AmazonAWSWAF)

有些经常更改标头和混乱的字符以使攻击者感到困惑(例如Netscaler,Big-IP)

有些人在服务器头数据包中暴露自己(eg.Approach, WTS WAF)

一些WAF在响应内容body中公开自身(例如DotDefender,Armor,Sitelock)

其他WAF会对恶意请求做出不寻常的响应代码答复(例如WebKnight,360WAF)

有些WAF会返回一堆垃圾数据,卡死你(例如:百度云加速乐)

检测技术

从浏览器发出普通的GET请求,拦截并记录响应头(特别是cookie)。

从命令行(例如cURL)发出请求,并测试响应内容和标头(不包括user-agent)。

向随机开放的端口发出GET请求,并抓住可能暴露WAF身份的标语。

如果某处有登录页面,表单页面等.请尝试一些常见的(易于检测的)有效负载,例如" or 1=1 -- -将../../../etc/passwd附加到URL末尾的随机参数在url的末尾添加一些吸引人的关键字,如'or sleep(5)'

使用过时的协议(如http/0.9)发出get请求(http/0.9不支持post类型查询)。

很多时候,waf根据不同的交互类型改变服务器头。

删除操作技术-发送一个原始的fin/rst包到服务器并识别响应。

侧通道攻击-检查请求和响应内容的计时行为。

检测工具

  • wappalyzer、whatweb等识别cms信息

  • wafw00f、nmap的http-waf-fingerprint.nse脚本等识别waf;

0x04 检索语法收集

fofa语法收集

https://fofa.so/

**FOFA相关语法** 
title="beijing"                   从标题中搜索“北京”
header="elastic"                  从http头中搜索“elastic”
body="网络空间测绘"                 从html正文中搜索“网络空间测绘”
fid="kIlUsGZ8pT6AtgKSKD63iw=="    查找相同的网站指纹 
domain="qq.com"                   搜索根域名带有qq.com的网站。
icp="京ICP证030173号"            查找备案号为“京ICP证030173号”的网站
js_name="js/jquery.js"            查找网站正文中包含js/jquery.js的资产
js_md5="82ac3f14327a8b7ba49baa208d4eaa15"     查找js源码与之匹配的资产
icon_hash="-247388890"            搜索使用此icon的资产。仅限FOFA高级会员使用
host=".gov.cn"                    从url中搜索”.gov.cn” 搜索要用host作为名称
port="6379"                       查找对应“6379”端口的资产
ip="1.1.1.1"                      从ip中搜索包含“1.1.1.1”的网站
ip="220.181.111.1/24"             查询IP为“220.181.111.1”的C网段资产
protocol="https"                  查询https协议资产  搜索指定协议类型(在开启端口扫描的情况下有效)
city="Hangzhou"                   搜索指定城市的资产。  
region="Zhejiang"                 搜索指定行政区的资产。  
country="CN"                      搜索指定国家(编码)的资产。  
cert="google"                     搜索证书(https或者imaps等)中带有google的资产。  
os=windows                        搜索Windows资产。  
server=="Microsoft-IIS/7.5"       搜索IIS 7.5服务器。  
app="HIKVISION-视频监控"           搜索海康威视设备  -
base_protocol="udp"               搜索指定udp协议的资产。  
is_domain=true                    搜索域名的资产  搜索域名的资产,只接受true和false。
ip_ports="80,161"                 搜索同时开放80和161端口的ip  搜索同时开放80和161端口的ip资产
ip_country="CN"                   搜索中国的ip资产(以ip为单位的资产数据)。  搜索中国的ip资产
ip_region="Zhejiang"              搜索指定行政区的ip资产(以ip为单位的资产数据)。  搜索指定行政区的资产

Google语法收集

inurl:example.com intitle:"index of"
inurl:example.com intitle:"index of /" "*key.pem"
inurl:example.com ext:log
inurl:example.com intitle:"index of" ext:sql|xls|xml|json|csv
inurl:example.com "MYSQL_ROOT_PASSWORD:" ext:env OR ext:yml -git
查找后台:site:xxx.cominurl:login|admin|manage|member|admin_login|login_admin|system|login|main|cms
查找文本内容:site:xxx.comintext:管理|后台|登陆|用户名|密码|验证码|系统|账号|admin|login|sys|manage|password|username
查找可注入点:site:xxx.cominurl:aspx|asp|jsp|php
查找上传漏洞:site:xxx.cominurl:file|load|editor|files
找eweb编辑器:site:xxx.cominurl:ewebeditor|editor|uploadfile|edit
存在的数据库:site:xxx.comfiletype:mdb|asp
查看脚本类型:site:xxx.comfiletype:asp|aspx|php|jsp
查找敏感信息:filetype:pdf|filetype:doc|filetype:xls intext:身份证|密码|手机号码

GitHub语法收集

使用githubdorks帮助我们寻找一些敏感信息,比如:
extension:pem private
extension:ppk private
extension:sql mysql dump password
extension:json api.forecast.io
extension:json mongolab.com
extension:yaml mongolab.com
extension:ica [WFClient] Password=
extension:avastlic "support.avast.com"
extension:js jsforce conn.login
extension:json googleusercontent client_secret
"target.com" send_keys
"target.com" password
"target.com" api_key
"target.com" apikey
"target.com" jira_password
"target.com" root_password
"target.com" access_token
"target.com" config
"target.com" client_secret
"target.com" user auth22
通过上述语法,可以搜索到一些敏感的私钥,一些SSH登录私钥,mysql的数据库密码,APIkey等等。

另外推荐一个脚本:https://github.com/techgaun/github-dorks

检索方法:

https://github.com/BishopFox/GitGot

https://github.com/UKHomeOffice/repo-security-scanner

https://github.com/gwen001/github-search

https://github.com/eth0izzle/shhgit

https://github.com/lightless233/geye

https://github.com/cve-search/git-vuln-finder

https://github.com/Securityautomation/DumpTheGit

https://github.com/4x99/code6

百度语法收集

  1. 把搜索范围限定在网页标题中--intitle

使用方式: 把查询内容中特别关键的部分用“intitle:”开头;

举个例子: 找萌宠泰迪的图片,就可以在搜索框中这样写: 照片intitle:泰迪;

注意事项: intitle:和后面的关键词之间没有空格。

  1. 把搜索范围限定在某一网站中--site使用方式

如果你已经知道某个网站中有你想要的内容,就可以利用这个语法把搜索范围限定在这个网站中来提升搜索效率。

在插叙内容后面加上site:网站域名;

举个例子:CSDN博客(blog.csdn.net)中php的相关文章,就可以在搜索框中这样写: phpsite:blog.csdn.net;

注意事项:“site:”和后面的网站域名之间不要带空格,也不要带“http://”。

  1. 把搜索范围限定在特定链接(url)中--inurl

使用方式: 网页的url中的部分信息往往能够提高搜索结果的准确性。用“inurl:”,后面跟着url中出现的关键词;

举个例子: 查询一下“渗透测试”,就可以在搜索框中这样写: 渗透测试inurl:blog。这表示“渗透测试 ”可以出现在网页的任何位置,“blog”这个词比较出现在网页url中;

注意事项:“inurl:”和后面所跟的关键词之间不要有空格。

  1. 精确匹配--""《》

使用方式: 在查询的词很长的情况下,百度所有结果可能把这个查询词拆分,导致搜索结果您并不满意。解决方案是可以给这个查询词加上双引号,或书名号,让百度不拆分查询词;

举个例子: 在搜索框中输入查询“黑客排名”,加上双引号(中英文双引号均可),获得的结果就是完全符合要求的;

注意事项:书名号在百度有两个特殊功能,首先书名号会出现在搜索结果中;而是被书名号括起来的内容不会被拆分,这个在查询电影书籍时特别有效。

  1. 让搜索结果中不含有特定查询词--减号

使用方式: 如果搜索结果中有一些网页是您不需要的,而且这些网页都包括特定关键词,那么用减号语法可以去除这些含有特定关键词的网页;

举个例子: 搜简历模板,不希望出现关于毕业生简历的网页。那么可以这样查询:简历模板-程序员简历;

注意事项: 前一个关键词和减号之间必须有空格,没有空格减号会被当成连字符。

0x05 favicon.ico图标

可以获取目标站点的favicon.ico图标的哈希值,然后配合shodan进行目标站点资产收集,因为每个目标站点的favicon.ico图标的哈希值可能是固定值,因此可以通过该方法从shodan,fofa等等去寻找更多资产。

0x06源码信息收集

  1. JS文件信息收集

在JS文件中搜索关键字API,SwaggerUI等等,尝试寻找API接口地址。

  1. APk、jar等提取

通过AndroidKiller、apktool、jd-gui、jadx、jad等反编译工具静态分析

DAPro分析dex文件反汇编生成的Dalvik字节码,或者使用文本编辑器阅读baksmali反编译生成的smali文件。

另一种是阅读反汇编生成的Java源码,可以使用dex2jar生成jar文件,然后再用jd-gui阅读文件的代码。

  1. 引擎搜索

https://searchcode.com

https://gitee.com/

https://coding.net/

https://www.csdn.net/

  1. github敏感信息泄露实时监控

GSIL(GitHub Sensitive Information Leakage)项目

https://github.com/FeeiCN/GSIL

  1. 网盘搜索引擎

和github类似,网盘中往往会存在企业泄露的内部信息或者cms,同样需要关注

常见的网盘搜索引擎
盘多多:http://www.panduoduo.net
盘搜搜:http://www.pansoso.com
盘搜:http://www.pansou.com/
凌云风搜索:https://www.lingfengyun.com

0x07 社工收集

https://nosec.org/home/detail/4322.html

http://site3.sjk.space/

https://www.reg007.com/

https://www.instantcheckmate.com/

http://www.uneihan.com

https://privacy.kallydev.com/

0x08 其他收集手段

端口探测

方法:nmap、masscan、Hping3

  • banner信息获取:nc、socket、dmitry、nmap nmap:更多使用方法可查找相关资料

  • 查看本地端口开发情况:nmap -A -v -T4 192.168.1.1

  • 可视化:zenmap Masscan

  • 探测端口开放信息:masscan -p80 192.168.1.1/24 --rate=10000

  • 御剑高速TCP端口扫描工具

常见的服务及端口

HTTP服务器默认端口号为:80/tcp(木马Executor开放此端口)
HTTPS服务器默认端口号为:443/tcp
Telnet(远程登录)默认端口号为:23/tcp(木马Tiny Telnet Server所开放的端口)
FTP默认端口号为:21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash等所开放的端口)
TFTP(Trivial File Transfer Protocol)默认端口号为:69/udp
SSH(安全登录)、SCP(文件传输)、端口号重定向,默认端口号为:22/tcp
SMTP(E-mail)默认端口号为:25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)
POP3 Post Office Protocol(E-mail)默认端口号为:110/tcp
Webshpere应用程序默认端口号为:9080
TOMCAT默认端口号为:8080
MySQL数据库默认端口号为:3306
racle 数据库默认的端口号为:1521
WIN2003远程登录默认端口号为:3389
MS SQL*SERVER数据库server默认端口号为:1433/tcp

旁站探测

查询:https://dns.aizhan.com/site.ip138.com、fofa、zoomeye

C 段查询

SSL 查询

证书搜索域名、检索公司的关联域名和子域名
检索方法:https://crt.sh、zmap、censys.io、sublister

软件利用

利用火绒剑,配合微信发语音的方式,可以获取该人的登录IP。

Headers 记录

网盘搜索

备案号查询

https://beian.miit.gov.cn/#/Integrated/index

http://icp.bugscaner.com

历史漏洞收集

第三方网站查询

工具:7kb、破壳、k8
网站:社工库、威胁情报(华为威胁情报)、网盘搜索、钟馗之眼、天眼查、

https://ti.360.cn/、htp://www.anquan.us/、https://whatcms.org/?s=
https://www.virustotal.com/#/home/url、wooyun镜像https://searchdns.netcraft.com/https://centralops.net/co/ https://www.threatcrowd.org/https://securitytrails.com/ 第三方接口查询:
riskiq、shodan、findsubdomains、censys.iodnsdb.io、微步在线、fofa

云泄露

如果泄露阿里云的 AKSK,可以使用AKSKtools工具进一步利用

https://xz.aliyun.com/t/8429

目录扫描

  1. dirsearch

dirsearch 是一个python开发的目录扫描工具,目的是扫描网站的敏感文件和目录从而找到突破口。

项目地址:https://github.com/maurosoria/dirsearch

  1. dirmap

一个基于python3 的高级web 目录扫描工具。

项目地址:https://github.com/H4ckForJob/dirmap

  1. DirBuster

DirBuster是一个多线程的基于Java的应用程序设计蛮力Web /应用服务器上的目录和文件名 。

项目地址:https://sourceforge.net/projects/dirbuster/files/latest/download

  1. 御剑

蛮经典的一款工具,使用起来蛮简单,当然,比较依赖于字典

  1. 7kbscan-WebPathBrute

支持批量导入目标域名及选择不同的爆破字典

  1. 目录扫描工具:

项目地址:https://github.com/j3ers3/Dirscan

A simple and fast directory scanning tool for pentesters

敏感文件泄露

  1. .git 泄露

工具:https://github.com/denny0223/scrabble

工具:githacker https://github.com/WangYihang/GitHacker

在git泄露中也可能有其他有用的信息如在文件下.git/config文件下的access_token信息进而访问该用户 的其他仓库。

  1. SVN 泄露

工具:seay-svn

dvcs-ripper

https://github.com/kost/dvcs-ripper

  1. HG 泄露

工具:https://github.com/kost/dvcs-ripper

  1. 备份文件

7kbscan-WebPathBrute 及各类备份文件字典

  1. 常用的目录字典

对于依赖于字典的爆破来说,目录字典是必不可少的一部分,总结一下网上比较多赞的项目。 项目地址:

https://github.com/TheKingOfDuck/fuzzDicts

https://github.com/Stardustsky/SaiDict

https://github.com/DictionaryHouse/Dirpath_List

搜索引擎信息收集

FOFA可以搜索到部分子域名,也可以搜索到目标的各种系统,如OA、后台等等,而这些系统很容易成为突破口。

nmap使用手册

常见服务及对应端口

posted @ 2021-11-08 21:12  FreeK0x00  阅读(282)  评论(0编辑  收藏  举报