美文网首页Kali Linux系统运维专家
可怕的黑暗料理之暗黑谷歌搜索神器

可怕的黑暗料理之暗黑谷歌搜索神器

作者: AdilLau | 来源:发表于2019-05-18 17:17 被阅读15次

    1.暗黑谷歌的由来

    有这么一款搜索引擎,它一刻不停的在寻找着所有和互联网关联的PLC、摄像头、红绿灯、打印机、路由器、交换机、服务器、数据库等等各种软硬件服务设施。

    它就是shodan,那么shodan到底是什么呢?怎么会有如此大的魔力?首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan不是在网上搜索网址,而是直接进入互联网探索其背后的信息。

    Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。其中最受欢迎的搜索内容是:webcam,linksys,cisco,netgear,SCADA等等。

    配合其组合参数,可以做到以下功能:

    • 批量搜索现有漏洞主机
    • 统计感染某木马的主机数量
    • 批量扫描登录入口,并使用弱口令字典进行爆破
    • 批量抓取shell
    • 使用自己的0day打遍天下

    写这篇文章是希望能够将这款工具的用途、使用方法、利用技巧进行实战应用。以便使用Shodan搜索引擎进行相关搜索,并利用Shodan的API编写Python脚本,进行批量扫描,将技术应用到渗透测试和安全攻防中,最大限度做好安全防御。


    2.Shodan的工作原理

    Shodan每隔一段时间就会对全球大约8亿主机进行扫描,通过对返回Banner信息的处理,识别特定主机,并进行分类储存。为了避免因政治、技术等原因导致的扫描信息误差(比如某墙或某些老美服务商对大陆羊毛党的屏蔽等),Shodan的扫描主机至少遍布在全球的8个国家和地区。

    当我们发出一条搜索请求,其背后的逻辑是这样的


    那Banner是什么呢?
    在探测端口时数据包里存在Banner信息

    HTTP/1.1 200 OK
    Server: nginx/1.16.0
    Date: Sat, 18 May 2019 06:56:30 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: keep-alive
    

    这是一个普通的HTTP Banner,可以从上获知服务端使用的是1.16.0版本的nginx。

    西门子S7-300工控协议的Banner:

    Reserved for operating system: 
    Serial number of memory card: SD D45C6213
    Location designation of a module: 
    Module type: CPU 315-2 PN/DP
    PLC name: S7-300 station_1
    Plant identification: 
    OEM ID of a module: 
    Module name: Vestas V27 AS+PITCH
    Serial number of module: 18382
    

    其中能获取更多的信息。

    Shodan的Banner处理机制比较复杂,我们这里只需要知道探测端口是来往的数据包中包含Banner,并包含了主机的部分信息即可。

    3.Shodan的查询指南

    基本查询

    Shodan的参数有很多,这里只介绍简单几种。

    hostname:"主机或域名"   如 hostname:"google''
    port:"端口或服务" 如 port:"80"
    ip : "ip地址" 如 ip : "114.114.114.114"
    net:"IP地址或子网"如 net:"111.112.113.110.0/24"
    vuln :指定漏洞的cve如 vuln:CVE-2015-8869
    但是这个命令最好搭配起来使用,如 country:CN vuln:CVE-2018-0610
    os :"操作系统" 如 os:"debian"
    isp:"ISP供应商" 如 isp:"China Telecom"
    product:"操作系统/软件/平台" 如 product:"nginx"
    version:"软件版本" 如 version:"1.16.0"
    geo:"经纬度" 如 geo:"38°53.707′,77°02.182"
    country`:"国家" 如 country:"China"
    city:"城市"  如 city:"shanghai"
    org:"组织或公司" 如org:"google"
    before/after:"日/月/年" 如 before:"11/05/2019" after:"11/05/2019"
    asn : "自治系统号码" 如 asn:"TS1826"
    

    关联查询

    搜索上海开放8080端口的主机

    Apache city:"shanghai" port:"8080"
    

    搜索IP段为23.238.20.0/24的所有linux主机

    os:"linux"  net:"23.238.20.0/24"
    

    Shodan参数还有很多,前提是注册或付费用户:


    更多信息使用时可以查看中文说明手册,可点击前往。

    其他功能

    Shodan 不仅可以查找网络设备,它还具有其他相当不错的功能。
    Exploits:每次查询完后,点击页面上的 “Exploits” 按钮,Shodan 就会帮我们查找针对不同平台、不同类型可利用的 exploits。当然也可以通过直接访问网址来自行搜索:https://exploits.shodan.io/welcome


    地图:每次查询完后,点击页面上的 “Maps” 按钮,Shodan 会将查询结果可视化的展示在地图当中;

    报表:每次查询完后,点击页面上的 “Create Report” 按钮,Shodan 就会帮我们生成一份精美的报表,这是天天要写文档兄弟的一大好帮手啊;

    4.命令行下的Shodan

    Shodan 是由官方提供的 Python 库的,项目位于:https://github.com/achillean/shodan-python

    安装

    pip install shodan
    或者
    git clone https://github.com/achillean/shodan-python.git && cd shodan-python
    python setup.py install
    

    本文以debian为例,安装完后我们先看下帮助信息:

    root@debian:~# shodan -h
    Usage: shodan [OPTIONS] COMMAND [ARGS]...
    Options:
      -h, --help  Show this message and exit.
    Commands:
      alert       Manage the network alerts for your account  # 管理账户的网络提示
      convert     Convert the given input data file into a...  # 转换输入文件
      count       Returns the number of results for a search  # 返回查询结果数量
      download    Download search results and save them in a...  # 下载查询结果到文件
      honeyscore  Check whether the IP is a honeypot or not.  # 检查 IP 是否为蜜罐
      host        View all available information for an IP...  # 显示一个 IP 所有可用的详细信息
      info        Shows general information about your account  # 显示账户的一般信息
      init        Initialize the Shodan command-line  # 初始化命令行
      myip        Print your external IP address  # 输出用户当前公网IP
      parse       Extract information out of compressed JSON...  # 解析提取压缩的JSON信息,即使用download下载的数据
      scan        Scan an IP/ netblock using Shodan.  # 使用 Shodan 扫描一个IP或者网段
      search      Search the Shodan database  # 查询 Shodan 数据库
      stats       Provide summary information about a search...  # 提供搜索结果的概要信息
      stream      Stream data in real-time.  # 实时显示流数据
    

    常用示例

    init
    初始化命令行工具。

    root@debian:~# shodan init [API_Key] #请使用自己账号的API Key
    Successfully initialized
    

    count
    返回查询的结果数量。

    root@debian:~# shodan count nginx 1.16.0
    81840
    

    download
    将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载10条结果,如果想下载更多结果需要增加 --limit 参数。

    root@debian:~# shodan download nginx 1.16.0 --limit 100
    Search query:                   1.16.0
    Total number of results:        82058
    Query credits left:             0
    Output file:                    nginx.json.gz
      [###---------------------------------]   10%  00:00:31
    Notice: fewer results were saved than requested
    Saved 100 results into file nginx.json.gz
    

    parse
    我们可以使用 parse 来解析之前下载数据,它可以帮助我们过滤出自己感兴趣的内容,也可以用来将下载的数据格式从 JSON 转换成 CSV 等等其他格式,当然更可以用作传递给其他处理脚本的管道。例如,我们想将上面下载的数据以CSV格式输出IP地址、端口号和组织名称:

    root@debian:~# shodan parse --fields ip_str,port,org --separator , nginx.json.gz 
    23.239.25.203,80,Linode
    85.209.0.11,80,
    93.119.176.67,80,0 7 I N T E R N E T . R O
    149.202.169.98,80,OVH SAS
    138.68.232.31,80,Digital Ocean
    195.70.4.97,80,DFI Service SA
    47.101.70.248,80,Hangzhou Alibaba Advertising Co.,Ltd.
    42.159.196.244,80,Shanghai Blue Cloud Technology Co.,Ltd
    142.4.17.163,80,Unified Layer
    80.69.173.48,80,UpCloud Cloud Servers
    39.100.85.208,80,Hangzhou Alibaba Advertising Co.,Ltd.
    156.67.92.27,80,NETRONIK sp. z o.o.
    193.112.97.173,80,Tencent cloud computing
    47.107.139.162,80,Hangzhou Alibaba Advertising Co.,Ltd.
    129.121.192.115,8080,Nexcess.net L.L.C.
    162.144.69.141,80,Unified Layer
    164.138.216.162,80,SuperHosting.BG Ltd.
    ......................................... #此处省略N行。
    

    host
    查看指定主机的相关信息,如地理位置信息,开放端口,甚至是否存在某些漏洞等信息。

    root@debian:~# shodan host 42.159.196.244
    42.159.196.244
    City:                    Shanghai
    Country:                 China
    Organization:            Shanghai Blue Cloud Technology Co.,Ltd
    Updated:                 2019-05-18T08:13:44.814290
    Number of open ports:    2
    Vulnerabilities:         CVE-2018-15919 CVE-2017-15906
    
    Ports:
         22/tcp OpenSSH (7.4)
         80/tcp nginx (1.16.0)
    

    search
    直接将查询结果展示在命令行中,默认情况下只显示IP、端口号、主机名和HTTP数据。当然我们也可以通过使用 –fields 来自定义显示内容,例如,我们只显示IP、端口号、组织名称和主机名:

    root@debian:~# shodan search --fields ip_str,port,org,hostnames nginx 1.16.0
    162.144.138.155 80      Unified Layer   server.vitaathletics.com        
    85.209.0.11     80                      
    162.144.196.17  80      Unified Layer   server.yen.hlv.mybluehost.me    
    138.68.232.31   80      Digital Ocean   nexo-host.com.ve        
    212.22.64.245   80      LLC Quadronet   timri.ru        
    38.143.213.84   80      Cogent Communications           
    212.33.243.127  80      JSC ER-Telecom Holding  212x33x243x127.static-business.perm.ertelecom.ru        
    64.247.179.214  80      SoftwareWorks Group     useast33.myserverhosts.com      
    120.31.140.112  81      FoShan RuiJiang Science and Tech        ns1.eflydns.net;ns2.eflydns.net 
    80.69.173.48    80      UpCloud Cloud Servers   80-69-173-48.fi-hel1.upcloud.host       
    85.209.0.76     80                      
    156.67.92.27    80      NETRONIK sp. z o.o.             
    162.144.201.223 80      Unified Layer   server.formacolorytextura.com   
    193.112.97.173  80      Tencent cloud computing         
    47.110.78.125   80      Hangzhou Alibaba Advertising Co.,Ltd.           
    129.121.192.115 8080    Nexcess.net L.L.C.      ip-129-121-192-115.local  
    ......................................... #此处省略N行。      
    

    5.代码中使用 Shodan 库

    上面介绍了 shodan 库的用法,这里描述下如何在python代码中使用 shodan 库,首先需要初始化连接 API,代码如下:

    import shodan
    SHODAN_API_KEY = "API_Key"
    api = shodan.Shodan(SHODAN_API_KEY)
    

    随后,我们就可以搜索数据了,示例代码片如下:

    try:
        # 搜索 Shodan
        results = api.search('apache')
        # 显示结果
        print 'Results found: %s' % results['total']
        for result in results['matches']:
                print result['ip_str']
    except shodan.APIError, e:
        print 'Error: %s' % e
    

    这里 Shodan.search() 会返回类似如下格式的 JSON 数据:

    {
            'total': 8669969,
            'matches': [
                    {
                            'data': 'HTTP/1.0 200 OK\r\nDate: Mon, 08 Nov 2010 05:09:59 GMT\r\nSer...',
                            'hostnames': ['pl4t1n.de'],
                            'ip': 3579573318,
                            'ip_str': '89.110.147.239',
                            'os': 'FreeBSD 4.4',
                            'port': 80,
                            'timestamp': '2014-01-15T05:49:56.283713'
                    },
                    ...
            ]
    }
    

    常用 Shodan 库函数

    • shodan.Shodan(key) :初始化连接API
    • Shodan.count(query, facets=None):返回查询结果数量
    • Shodan.host(ip, history=False):返回一个IP的详细信息
    • Shodan.ports():返回Shodan可查询的端口号
    • Shodan.protocols():返回Shodan可查询的协议
    • Shodan.services():返回Shodan可查询的服务
    • Shodan.queries(page=1, sort='timestamp', order='desc'):查询其他用户分享的查询规则
    • Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
    • Shodan.search(query,page=1,limit=None,offset=None,facets=None,minify=True):查询Shodan数据。

    至此,暗黑谷歌的料理介绍完毕,如果有付费的Shodan Membership用户就可以好好的Happy了。与之相似的料理就是Tor浏览器,这是一个无痕浏览的神器。

    Tor浏览器的工作原理就是将你的ip跳到一连串的的代理上,比如:把你的ip地址先从美国跳到加拿大再跳到荷兰、日本、德国、俄罗斯。。。。。下载链接:https://www.torproject.org/download/

    其中所有的数据全部都是经过加密处理,目的就是为了掩藏真正访问者的ip,防止被访问者的追踪。有兴趣的可以自行研究下,这里不再过多描述,综上内容纯属攻防和白帽子技术爱好。知己知彼,方能百战不殆。加油吧,少年!未来的某一天,白帽子大牛中你可能也是其中之一。

    相关文章

      网友评论

        本文标题:可怕的黑暗料理之暗黑谷歌搜索神器

        本文链接:https://www.haomeiwen.com/subject/xnqtzqtx.html