信息收集 - 渗透测试重中之重
0x00 通过DNS信息收集
收集:whois查询、站长查询、DNS域传输漏洞、DNS历史记录解析
CDN识别
-
Nslookup
-
多地ping查询网址
-
CDN识别网站
CDN绕过
-
查子域名
-
历史DNS记录
-
DNSAB
host:www.ichunqiu.com 得到域名的历史解析的IP地址
- 微步在线
- 查看dns信息
https://viewdns.info/iphistory/?domain=www.ichunqiu.com
获取域名的dns历史解析IP的记录
- Get Ping MTR TraceRoute Dns Cdn LDns
- IP138查询网
- securitytrails
https://securitytrails.com/domain/www.ichunqiu.com/dns 历史DNS查询
https://sitereport.netcraft.com/?url=www.ichunqiu.com Netcraft查询域名相关信息
- 检索
-
国外访问
-
直接从CDN本身入手(CDN注册
-
Mx记录或邮件很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等。而且一般的邮件系统很多都是在内部,没有经过CDN的解析。可在邮件源码里面就会包含服务器的真实IP。(RSS订阅或注册用户发送邮箱)直接暴露真实IP地址。
-
网络空间引擎搜索法:zoomeye、fofa、shodan
-
通过这些公开的安全搜索引擎爬取得历史快照,一些主要特征总结如下:
-
特有的http头部(如server类型、版本、cookie等信息)
-
特定keyword(如title、css、js、url等)
-
特定的IP段搜索(如fofa支持C段搜索)
-
shodan 搜索引擎shodan网络搜索引擎偏向网络设备以及服务器的搜索
- 搜索语法
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应用层面的搜索。
- 搜索语法
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搜索引擎偏向资产搜索
- 搜索语法
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解析的查询平台。
- 搜索语法
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
- 查询HTTPS证书
0x01 Fuzz子域名
- 爬取方法:爬取页面a标签、js的url(jsfinder)、form表单的action、源代码的注释url等方法
-
工具:Subdomainsbrute、Layer子域名挖掘机5.0、Oneforall、wwwscan、jsfinder、御剑、webrobot2
-
爬行:burpsuite、轻量级网站目录爬行、awvs、xray
-
猜测:猜测手工测试子域名
0x02 指纹识别
-
工具:御剑web指纹识别系统、whatweb、wappalyzer、WebDevelpoer、WTFScan、whatrun
-
在线识别:
-
WhatWeb:https://www.morningstarsecurity.com/research/whatweb/
-
默认后台猜解或者fuzz测试,fuzz源码文件,中间件、框架、cms等开发页面以及配置文件,asp、aspx、jsp、php等语言配置文件,IIS短文件名等漏洞。system、check等字眼快速判断目录的作用,文件目录太多,可以根据目录的直译来判断该文件的作用。
- 特定文件的MD5
一些网站的特定图片文件、js文件、CSS等静态文件,如favicon.ico、css、logo.ico、js等文件一般不会修改,通过爬虫对这些文件进行抓取并比对md5值,如果和规则库中的Md5一致则说明是同一CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的CMS会修改这些文件。获得哈希值,工具对比。
- 正常页面或错误网页中包含的关键字
先访问首页或特定页面如robots.txt等,通过正则的方式去匹配某些关键字,如Poweredby Discuz、dedecms等。或者可以构造错误页面,根据报错信息来判断使用的CMS或者中间件信息,比较常见的如tomcat的报错页面。
- 请求头信息的关键字匹配
-
根据网站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等设备。
- 部分URL中包含的关键字
比如wp-includes、dede等URL关键特征通过规则库去探测是否有相应目录,或者根据爬虫结果对链接url进行分析,或者对robots.txt文件中目录进行检测等等方式,通过url地址来判别是否使用了某CMS,比如wordpress默认存在wp-includes和wp-admin目录,织梦默认管理后台为dede目录,solr平台可能使用/solr目录,weblogic可能使用wls-wsat目录等。以及meta标签中的content字段
- 开发语言的识别
-
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等。
- 指纹识别
很多网站会使用已有的内容管理系统(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语法收集
**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
百度语法收集
- 把搜索范围限定在网页标题中--intitle
使用方式: 把查询内容中特别关键的部分用“intitle:”开头;
举个例子: 找萌宠泰迪的图片,就可以在搜索框中这样写: 照片intitle:泰迪;
注意事项: intitle:和后面的关键词之间没有空格。
- 把搜索范围限定在某一网站中--site使用方式
如果你已经知道某个网站中有你想要的内容,就可以利用这个语法把搜索范围限定在这个网站中来提升搜索效率。
在插叙内容后面加上site:网站域名;
举个例子:CSDN博客(blog.csdn.net)中php的相关文章,就可以在搜索框中这样写: phpsite:blog.csdn.net;
注意事项:“site:”和后面的网站域名之间不要带空格,也不要带“http://”。
- 把搜索范围限定在特定链接(url)中--inurl
使用方式: 网页的url中的部分信息往往能够提高搜索结果的准确性。用“inurl:”,后面跟着url中出现的关键词;
举个例子: 查询一下“渗透测试”,就可以在搜索框中这样写: 渗透测试inurl:blog。这表示“渗透测试 ”可以出现在网页的任何位置,“blog”这个词比较出现在网页url中;
注意事项:“inurl:”和后面所跟的关键词之间不要有空格。
- 精确匹配--"" 、《》
使用方式: 在查询的词很长的情况下,百度所有结果可能把这个查询词拆分,导致搜索结果您并不满意。解决方案是可以给这个查询词加上双引号,或书名号,让百度不拆分查询词;
举个例子: 在搜索框中输入查询“黑客排名”,加上双引号(中英文双引号均可),获得的结果就是完全符合要求的;
注意事项:书名号在百度有两个特殊功能,首先书名号会出现在搜索结果中;而是被书名号括起来的内容不会被拆分,这个在查询电影书籍时特别有效。
- 让搜索结果中不含有特定查询词--减号
使用方式: 如果搜索结果中有一些网页是您不需要的,而且这些网页都包括特定关键词,那么用减号语法可以去除这些含有特定关键词的网页;
举个例子: 搜简历模板,不希望出现关于毕业生简历的网页。那么可以这样查询:简历模板-程序员简历;
注意事项: 前一个关键词和减号之间必须有空格,没有空格减号会被当成连字符。
0x05 favicon.ico图标
可以获取目标站点的favicon.ico图标的哈希值,然后配合shodan进行目标站点资产收集,因为每个目标站点的favicon.ico图标的哈希值可能是固定值,因此可以通过该方法从shodan,fofa等等去寻找更多资产。
0x06源码信息收集
- JS文件信息收集
在JS文件中搜索关键字API,SwaggerUI等等,尝试寻找API接口地址。
- APk、jar等提取
通过AndroidKiller、apktool、jd-gui、jadx、jad等反编译工具静态分析
DAPro分析dex文件反汇编生成的Dalvik字节码,或者使用文本编辑器阅读baksmali反编译生成的smali文件。
另一种是阅读反汇编生成的Java源码,可以使用dex2jar生成jar文件,然后再用jd-gui阅读文件的代码。
- 引擎搜索
- github敏感信息泄露实时监控
GSIL(GitHub Sensitive Information Leakage)项目
https://github.com/FeeiCN/GSIL
- 网盘搜索引擎
和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
https://www.instantcheckmate.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 段查询
-
查询:
-
查询该ip的具体信息:https://www.ipip.net
-
ip反查域名/域名对应ip:https://site.ip138.com
-
本机ip/其他ip简单信息:http://www.cip.cc/
SSL 查询
证书搜索域名、检索公司的关联域名和子域名
检索方法:https://crt.sh、zmap、censys.io、sublister
软件利用
利用火绒剑,配合微信发语音的方式,可以获取该人的登录IP。
Headers 记录
-
CORS记录
-
mx和spf记录:nslookup -q=txt emailpower.cn,nslookup -q=mx emailpower.cn
网盘搜索
备案号查询
https://beian.miit.gov.cn/#/Integrated/index
历史漏洞收集
第三方网站查询
工具: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.io、dnsdb.io、微步在线、fofa
云泄露
如果泄露阿里云的 AKSK,可以使用AKSKtools工具进一步利用
目录扫描
- dirsearch
dirsearch 是一个python开发的目录扫描工具,目的是扫描网站的敏感文件和目录从而找到突破口。
项目地址:https://github.com/maurosoria/dirsearch
- dirmap
一个基于python3 的高级web 目录扫描工具。
项目地址:https://github.com/H4ckForJob/dirmap
- DirBuster
DirBuster是一个多线程的基于Java的应用程序设计蛮力Web /应用服务器上的目录和文件名 。
项目地址:https://sourceforge.net/projects/dirbuster/files/latest/download
- 御剑
蛮经典的一款工具,使用起来蛮简单,当然,比较依赖于字典
- 7kbscan-WebPathBrute
支持批量导入目标域名及选择不同的爆破字典
- 目录扫描工具:
项目地址:https://github.com/j3ers3/Dirscan
A simple and fast directory scanning tool for pentesters
敏感文件泄露
- .git 泄露
工具:https://github.com/denny0223/scrabble
工具:githacker https://github.com/WangYihang/GitHacker
在git泄露中也可能有其他有用的信息如在文件下.git/config文件下的access_token信息进而访问该用户 的其他仓库。
- SVN 泄露
工具:seay-svn
dvcs-ripper
https://github.com/kost/dvcs-ripper
- HG 泄露
工具:https://github.com/kost/dvcs-ripper
- 备份文件
7kbscan-WebPathBrute 及各类备份文件字典
- 常用的目录字典
对于依赖于字典的爆破来说,目录字典是必不可少的一部分,总结一下网上比较多赞的项目。 项目地址:
https://github.com/TheKingOfDuck/fuzzDicts
https://github.com/Stardustsky/SaiDict
https://github.com/DictionaryHouse/Dirpath_List
搜索引擎信息收集
FOFA可以搜索到部分子域名,也可以搜索到目标的各种系统,如OA、后台等等,而这些系统很容易成为突破口。