用户
搜索

[二进制安全] 渗透测试之信息搜集

  • TA的每日心情
    奋斗
    2018-10-14 10:40
  • 签到天数: 104 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋-见习白帽

    Rank: 3Rank: 3

    1

    主题

    50

    帖子

    1474

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2016-6-29
    发表于 2017-11-10 19:17:30 723564
        信息搜集是渗透测试的最重要的阶段,占据整个渗透测试的60%,可见信息搜集的重要性。根据收集的有用信息,可以大大提高我们渗透测试的成功率。对于刚刚入门小白的我,在前期的信息搜集阶段也不敢马虎,不希望因为一些信息错失一些目标。
    0x01 搜索引擎
    Google、Bing、ZoomEye(钟馗之眼)、Shodan(撒旦)
    Google hacking
    intext: 把网页中的正文内容中的某个字符做为搜索条件
    allintext: 使用方法和intext类似
    intitle: 搜索网页标题中是否有我们所要找的字符
    cache: 搜索GOOGLE里关于某些内容的缓存,有时候往往能找到一些好东西
    define: 搜索某个词的定义
    filetype: 搜索制定类型的文件
    info: 查找指定站点的一些基本信息
    inurl: 搜索我们指定的字符是否存在于URL中.常用于查找通用漏洞、注入点、管理员登录的URL
    allinurl:也同INURL类似,可指定多个字符
    LINKURL: 例如搜索:INURL:HDU.EDU.CN可以返回所有和HDU.EDU.CN做了链接的URL
    site: 搜索指定域名,用于搜集二级域名

    一些连接符

    + 把GOOGLE可能忽略的字列如查询范围
    – 把某个字忽略
    ~ 同意词
    . 单一的通配符
    * 通配符,可代表多个字母
    “” 精确查询
    Google域名
    不同地区的 Google 搜索的不同,这种搜索引擎为了向大众提供方便根据不同的地域进行不同的优化。我们可以使用不同地区进行搜索的,可能获取一些不一样的信息。例如:
    常见国际域名缩写

    CN      中国    China
    HK      香港特别行政区 Hongkong
    MO      澳门    Macao
    TW      台湾省  Taiwan
    KP      朝鲜    North Korea
    KR      韩国    Korea
    JP      日本    Japan
    RU      俄罗斯  Russia
    SG      新加坡  Singapore
    FR      法国    France
    CA      加拿大  Canada
    AU      澳大利亚       Australia
    US      美国    United States of America
    Bing
    bing主要用于搜集一些旁站信息,这点功能十分的强大。使用方法直接搜索ip:xxx.xxx.xxx.xxx即可。
    ZoomEye、Shodan
    众所周知比较强大的搜索引擎,可以批量对一些漏洞进行查找,可以寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。
    常用语法

    hostname:搜索指定的主机或域名,例如 hostname:"google"
    port:搜索指定的端口或服务,例如 port:"21"
    country:搜索指定的国家,例如 country:"CN"
    city:搜索指定的城市,例如 city:"BeiJing"
    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"
    0x02 whois查点
    whois信息包含了域名注册者的姓名、邮箱、电话、地址、DNS服务器等信息,对我们渗透目标以后后序的社工都很有用。
    KALI的whois查询
    在线查询
    whois反查
    利用注册人、邮箱、电话等进行whois反查,也可以搜集到一些意想不到的信息。
    0x03 目标IP
        现在大部分网站都采用了CDN加速,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定,为用户提供更流畅的服务。可是对于我们渗透测试人员来说,对判断目标IP带来阻碍。绕过CDN获取真实IP:
    判断:在不同地区ping网址
    kaili下:dnsenum
    dnsenum -o /root/baidu.com -t 30 --threads 30 baidu.com
    查找真实ip
    1、二级域名法
        一般网站不会所有的二级域名放CDN,可以使用谷歌语法site:xxxx.com查找二级域名,或者在线http://i.links.cn/subdomain/查找。确定没有使用CDN得二级域名之后,本地将目标域名绑定到同IP(修改hosts文件),如果目标网站还能访问说明目标网站与二级域名在同一服务器上;如果不在统一服务器也可能在同C段,扫描C段所有开放80端口IP。
    2、nslookup
      大部分CDN提供商只针对国内市场,而国外的市场几乎不做CDN,所以有机会解析到真实IP。所以可以使用国外的VPS ping目标网址,或者使用nslookup http://xxx.com 国外DNS,例如:nslookup www.baidu.com 8.8.8.8,国外DNS最好找一些冷门的提供商。
      或者查询域名的NS记录,在域名记录中的MX记录,TXT记录等很有可能指向的是真实ip或同C段服务器。
    3、ping
      很多厂商只是把www.xxx.com做了CDN,我们可以使用ping http://www.xxx.com,或者使用国外多节点ping在线工具,例如just-ping:http://www.just-ping.com
    4、查看历史记录
      查找域名历史解析记录,域名在上CDN之前用的IP,很有可能就是CDN的真实源IP地址http://toolbar.netcraft.com/site_report
    5、利用网站漏洞
       XSS盲打、命令执行反弹shell、SSRF等
    6、其他
       RSS订阅:通过RSS订阅的方式,可以查找到订阅的消息中真实IP
       订阅邮件:打开发来的邮件源码,可以看到服务器的真实IP,有时候会在同一网段,扫扫C段。
       phpinfo:这个是最直接的,使用目录扫描,关键在于你的字典是否强大。
    0x04 指纹识别
    whatweb
    Wappalyzer、Shodan、IP Whois & FlagsChrome & Websites Rating

    nmap
    TCP/IP属性:TTL、Window Size、DF
      TTL:生存时间。指定数据报被路由器丢弃之前允许通过的网段数量。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。
    ping直接查看TTL
      可以看到TTL为54,路由追踪发现经过10跳到达目的,很有可能是Liunx系统,虽然这种方法可能存在偏差。
    WINDOWS NT/2000   TTL:128
    WINDOWS 95/98     TTL:32
    UNIX              TTL:255
    LINUX             TTL:64
    WIN7          TTL:64
    其实最快判断服务器的方法就是对域名改变大小写,Liunx对大写敏感,如果改变大小写提示404,应该就是Linux没跑了。
    数据库判断
    1、基于特定函数的判断
    len和length
        在mssql和mysql以及db2内,返回长度值是调用len()函数;在oracle和INFORMIX则是通过length()来返回长度值。当你使用and len('a')=1的时候,返回正常页面时,可以推断当前的数据库类型可能是mssql,或mysql,或是db2。反之则可能会是oracle和informix。
    @@version和version()
        在mysql内,可以用@@version或是version()来返回当前的版本信息。但无法判断是mysql还是mssql时,可以用version()函数来构造判断。version()>1 返回与@@version>1 相同页面时,则可能是mysql。如果出现提示version()错误时,则可能是mssql。
    substring和substr
        在mssql中可以调用substring。oracle则只可调用substr
    2、基于辅助的符号判断
    “/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
    “--”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
    “;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
        在注入点后加(必须为注入点);--(一个分号,两个横线),例如:http://xxxx/article/as.asp?id=1;--。如果返回正常的话,说明数据库是MSSQL。在MSSQL数据库中;和--都是存在的,;用来分离两个语句,而--就是注释符,它后面语句都不执行。如果返回错误,基本可以肯定是ACCESS数据库了。
        and exists (select count(*) fromsysobjects)
        and exists (select count(*) frommsysobjects)
        如果第一条返回正常,就是MSSQL数据库,如果两条都不正常,那就是ACCESS数据库了。
        第一句意思是查询sysobjects表里记录数大于,返回正常的,说明大于0且存在sysobjects这个表,因为这个表只有MSSQL数据库才有,所以可以判断为MSSQL数据库。返回错误则表示不是。
        第二句提交是不会返回正常页面的,就算是ACCESS数据库也不会返回正常。因为默认情况下我们没有权限查询这个表里的数据。WEB会提示我们“记录无法读取;'msysobjects'没有读取权限”,如果返回的是这个错误信息的话,那就证明是ACCESS数据库了
        以上参数都是int的时候,如果是字符型的话首先在参数后面加上单引号,然后再在查询语句后加上;--
    3、基于显示错误信息判断
        在注入点后直接加上单引号,根据服务器的报错信息来判断数据库。错误提示Microsoft JET Database Engine 错误 '80040e14',说明是通过JET引擎连接数据库,则表明数据库为ACCESS数据库,如果是ODBC的话则说明是MSSQL数据库。
    0x05 WAF检测
    WafW00f
    nmap
    nmap www.baidu.com --script=http-waf-detect
    或者--script=firewalk --traceroute、--script=http-waf-fingerprint
    0x06 端口扫描
    老生常谈的端口扫描,以及常用方法大家也都明白。
    nmap
    0x07 DNS查询
      DNS(域名系统)可以在侦查过程中提供有价值的数据,DNS的基本功能是将域名转换为IP地址。
    DNS记录:
    AAAA记录    IPv6 地址记录,记录一个域名对应的IPv6地址
    CNAME记录   别名记录,记录一个主机的别名
    MX记录    电子邮件交换记录,记录一个邮件域名对应的IP地址
    NS记录      域名服务器记录 ,记录该域名由哪台域名服务器解析
    PTR记录     反向记录,也即从IP地址到域名的一条记录
    TXT记录     记录域名的相关文本信息
    host
    host -t ns  www.baidu.com
    nslookup
    Nslookup命令以两种方式运行:非交互式和交互式。
    > nslookup
    默认服务器:  UnKnown
    Address:  192.168.43.1

    > ?
    命令:   (标识符以大写表示,[] 表示可选)
    set OPTION      - 设置选项
    domain=NAME         - 将默认域名设置为 NAME
    srchlist=N1[/N2/.../N6] - 将域设置为 N1,并将搜索列表设置为 N1、N2 等
    root=NAME           - 将根服务器设置为 NAME
    retry=X             - 将重试次数设置为 X
    timeout=X           - 将初始超时间隔设置为 X 秒
    type=X              - 设置查询类型(如 A、AAAA、A+AAAA、ANY、CNAME、MX、
    NS、PTR、SOA 和 SRV)
    ls [opt] DOMAIN [> FILE] - 列出 DOMAIN 中的地址(可选: 输出到文件 FILE)
    -a          -  列出规范名称和别名
    -d          -  列出所有记录
    -t TYPE     -  列出给定 RFC 记录类型(例如 A、CNAME、MX、NS 和 PTR 等)
    的记录
    exit            - 退出程序
    根据DNS查询,我们可以查找到DNS服务器、邮件服务器
    > nslookup
    默认服务器:  UnKnown
    Address:  192.168.43.1
    > set type=mx
    > baidu.com
    服务器:  UnKnown
    Address:  192.168.43.1

    非权威应答:
    baidu.com       MX preference = 20, mail exchanger = mx1.baidu.com
    baidu.com       MX preference = 10, mail exchanger = mx.n.shifen.com
    baidu.com       MX preference = 20, mail exchanger = jpmx.baidu.com
    baidu.com       MX preference = 20, mail exchanger = mx50.baidu.com

    baidu.com       nameserver = ns7.baidu.com
    baidu.com       nameserver = ns3.baidu.com
    baidu.com       nameserver = ns2.baidu.com
    baidu.com       nameserver = ns4.baidu.com
    baidu.com       nameserver = dns.baidu.com
    jpmx.baidu.com  internet address = 61.208.132.13
    dns.baidu.com   internet address = 202.108.22.220
    ns2.baidu.com   internet address = 61.135.165.235
    ns3.baidu.com   internet address = 220.181.37.10
    ns4.baidu.com   internet address = 220.181.38.10
    ns7.baidu.com   internet address = 180.76.76.92
    > exit
    邮件在发送的过程:
    1.发件人服务器需要先解析“收件人的域名”的MX主机
    2.然后解析MX主机对应的IP
    3.服务器通过连接对方的MX主机的25(邮件SMTP端口)发送邮件
    4.用户通过客户端工具如OUTLOOK foxmail软件连接收件人邮件服务器进行接收邮件
    0x08 子域名查询
    1、fierse工具
    fierce -dns  www.baidu.com
    2、在线查询
    http://i.links.cn/subdomain/
    3、谷歌语法
    site: baidu.com/
    4、subDomainsBrute
    https://github.com/lijiejie/subDomainsBrute
    5、DNS域传送漏洞
    > nslookup   输入nslookup命令进入交互式shell
    > server DNS服务器   Server 命令参数设定查询将要使用的DNS服务器
    > ls 域名   Ls命令列出某个域中的所有域名
    > exit  Exit命令退出程序
    0x09 源码泄露、敏感目录
    源码泄露
    1、.git源码泄露
    2、.DS_Store文件泄漏
    3、SVN文件泄露
    4、代码托管平台
    5、网站备份压缩文件
    .rar
    .zip
    .7z
    .tar.gz
    .bak
    .swp
    .txt
    .html
    敏感目录
    1、nikto
    2、dirb
    3、御剑目录扫描
    0x10 旁注 C段
      旁注的意思就是从同台服务器上的其他网站入手,提权,然后把服务器拿下,就自然那个网站也就拿下了。C段嗅探,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务。
    在线查询:
    http://www.webscan.cc/
    http://dns.aizhan.com/
    安全盒子C段旁注工具
    0x11 社工
    QQ、QQ空间、微信朋友圈、微博、支付宝
    Maltego:社工神器
    TheHarvester:通过Google、Bing、Linkedin、ExaLead等来搜索人员邮件 账户、用户名
    社工库:
    社交网站:
    求职网站:
        总而言之,信息搜集还有很多种方法,这里只是简单的说了我平时用的一些方法。信息收集在整个渗透中还是占据很重要的一部分,希望和大家一起交流学习。
    参考链接:

    发表于 2017-11-12 09:39:08
    我建议加一点你自己的技巧 和网上不同的 这样文章会看起来不一样
    使用道具 举报 回复
    icq6a70641f 发表于 2017-11-12 09:39
    我建议加一点你自己的技巧 和网上不同的 这样文章会看起来不一样

    ok 下次会注意的
    使用道具 举报 回复
    坏蛋 管理员 欢迎大家来春秋群找我玩
    地板
    发表于 2017-11-14 10:44:52
    感谢分享,不过这类较基础的内容社区已经很多了哦,欢迎分享一些更有趣,更深入一些的姿势
    此外,图片必须在编辑器上传,否则手机端是看不到的哈。
    欢迎加入i春秋QQ群大家庭,每人只能任选加入一个群哦!
    投稿请加QQ:780876774。

    i春秋—楚:713729706
    i春秋—魏:687133802
    网安交流群:820783253
    使用道具 举报 回复
    yyyxy 发表于 2017-11-14 10:44
    感谢分享,不过这类较基础的内容社区已经很多了哦,欢迎分享一些更有趣,更深入一些的姿势
    此外, ...

    恩 下次注意
    使用道具 举报 回复
    发表于 2017-11-14 23:23:29
    感谢分享
    使用道具 举报 回复

    排版不是很好 不要介意
    使用道具 举报 回复
    发表于 2018-9-20 15:18:20
    支持一下~
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册