1. 前言

在互联网中,充斥着各种各样的网络设备,shodan等搜索引擎提供给了我们一个接口,让我们可以在输入一些过滤条件就可以检索出网络中相关的设备。

对于我们的一些可能有脆弱性或者比较隐私的服务,为了抵御hacker通过shodan对其进行快速渗透,我们必然有这样的想法:能否让类似shodan这些搜索引擎没法扫描到我,让我这个设备在shodan的搜索结果中不出现,但同时不影响正常用户的访问?

2. 需求分析

出于这样的需求,我们最容易想到的方案就是黑名单,即把shodan的扫描服务器ip添加到我们的防火墙黑名单,这样这些ip在和我们进行连接的时候,防火墙就能直接拦截。但是,如何能获取到shodan扫描器的ip呢?很显然,shodan不可能傻到在网络上公布他们扫描服务器的ip地址,这样大家就可以轻而易举地对它进行屏蔽,那我们是否能利用一些别的手段获取到shodan的扫描服务器呢?

3. 谈shodan的banner抓取

使用过shodan进行搜索的朋友都知道,shodan搜索出来的数据中,一个很重要的数据就是banner信息,banner是shodan使用扫描器和目标服务器端口进行协议交互,目标服务器返回的标语信息。像下面这样的一条http服务的banner信息,通过banner信息我们能获取到相关协议使用的组件、版本等。

4. 巧妙利用Shodan的banner信息获取扫描服务器IP

shodan可以抓取目标服务器特定服务返回给我们的banner信息,这些banner信息可以分为两类,一类是静态banner,即无论何时何地谁和目标进行交互,目标都返回相同的banner,像下面这样的打印机设备,总是返回打印机的型号及状态:

另一类是动态banner,这也是我们需要深入研究的。如果朋友们有一些CTF的经验,肯定很熟悉错误回显这个词,错误回显即我们输入错误后,目标返回和输入相关的错误回显信息,比如:

我们在一个网页的输入框输入:1′ or 1#

服务器给我们返回:String “1 ‘ or 1#” is illegal

那么,shodan是否在抓取banner信息时候,是否也会抓到和扫描服务器ip相关的回显信息呢?比如,暴露在网络中的mysql服务,虽然shodan可以在网络中扫描到,但是却无法访问数据库【可能原因是ip不合法,用户名账户不匹配等】,mysql就会给扫描服务器返回一条

xxx.xxx.xxx.xxx is not allowed

这样的拒绝访问回显,xxx.xxx.xxx.xxx就是尝试和mysql建立连接但是无权访问的ip。我们在shodan中验证我们的想法,输入关键词【mysql】看到下面的搜索结果:

搜索结果验证了我们的猜想,我们利用api直接在命令行中进行查询:

下载搜索结果并经过处理后可以得到这样一批IP地址【部分】:

以上就是shodan扫描器的ip地址。

5. 深入研究Shodan的扫描器

通过对上述ip的地理信息研究,我们发现这些ip来源于全球各地:

其实,类似shodan这种扫描行为现在在国家政策层面已经开始被限制了,通过流量监控一旦发现有类似扫描行为,就会报警断网,但是shodan为什么可以规避这些限制,保证官网结果准确且更新快速呢?总结起来主要有两点:

1. 分布式扫描

如上文我们分析其ip地址来源,我们发现了其扫描服务器位于全球各地,就算某些国家禁止另外某个国家的ip访问,shodan也可以用其他国家的ip对其进行扫描,这样可以保证结果的真实完整性。

2. 随机化

如果大家有研究过防火墙或者IDS的检测策略,就会知道防火墙或IDS对于同一源地址向不同目标的地址的同一端口、同一源地址对同一目标的不同端口的连接访问统计是很容易的,一旦这些连接数超过了某一阈值,那么你的isp或者云服务提供商就会对你警告,如果你忽略这种警告,你面对的将是断网。

shodan面对这些策略时候,采用随机化目标ip和端口的方法进行随机探测,扫描流程如下:

step 1: 随机生成一个ipv4地址

step 2: 随机生成一个shodan要扫描的端口

step 3: 根据step1的ip和step2的端口,进行一次端口banner的抓取

step 4: 回到step1

通过上述的策略,shodan的扫描器看起来就像一个“正常”的主机。

6. 结束语

通过本文讲述的方法,可以获取到shodan的扫描服务器ip地址,把这些ip地址添加到防火墙的黑名单中,我们就可以防止shodan的扫描。当然,攻守永远是一个博弈的过程,shodan也可能经常变化他们的ip地址,但是只要我们通过这种方式不断更新我们的黑名单库,也可以一定程度上防止shodan的扫描。

如何让你的服务屏蔽Shodan扫描的更多相关文章

  1. Shodan新手入坑指南

    *本文原创作者:xiaix,本文属FreeBuf原创奖励计划,未经许可禁止转载 亲们~黑五 Shodan Membership 只要5刀,你剁手了没? 什么是 Shodan? 首先,Shodan 是一 ...

  2. nmap脚本扫描使用总结

    nmap的脚本默认目录为:/usr/share/nmap/scripts/ Nmap提供的命令行参数如下 -sC: 等价于--script=default,使用默认类别的脚本进行扫描 可更换其他类别 ...

  3. Hacker(16)----防范端口扫描与嗅探

    端口扫描与嗅探都是黑客常用的招数,其目的是定位目标计算机和窃取隐私信息.为确保自己计算机的安全,用户需要掌握防范嗅探与端口扫描的常见措施,保障个人隐私信息安全. 一.掌握防范端口扫描的常用措施 防范端 ...

  4. 2018-2019-2 20165205 《网络对抗技术》 Exp6 信息收集与漏洞扫描

    2018-2019-2 20165205 <网络对抗技术> Exp6 信息收集与漏洞扫描 实验目标 掌握信息收集的最基本技能与常用工具的方式 实验内容 各种搜索技巧的应用 DNS IP注册 ...

  5. 2017-2018 Exp6 信息搜集与漏洞扫描 20155214

    目录 Exp6 信息搜集与漏洞扫描 实验内容 信息收集 漏洞扫描 知识点 Exp6 信息搜集与漏洞扫描 收集渗透目标的情报是最重要的阶段.如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性. ...

  6. 20155320 Exp6 信息搜集与漏洞扫描

    20155320 Exp6 信息搜集与漏洞扫描 [实验后回答问题] (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管 ...

  7. centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课

    centos linux系统日常管理3  服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...

  8. 黑暗世界的搜索引擎 https://fofa.so/ https://www.shodan.io https://www.zoomeye.org 查找设备漏洞

    from:http://www.freebuf.com/sectool/121339.html 什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎 ...

  9. Shodan 使用

    本文来自:Shodan新手入坑指南, 记录简要用法,以便使用. 文章先给出搜索过滤方法,然后再简单介绍两种使用shodan的方法:使用命令和编写代码. 搜索过滤 hostname:搜索指定的主机或域名 ...

随机推荐

  1. spoj104 HIGH - Highways 矩阵树定理

    欲学矩阵树定理必先自宫学习一些行列式的姿势 然后做一道例题 #include <iostream> #include <cstring> #include <cstdio ...

  2. tar.xz结尾的文件的解压缩方法

    例如: codeblocks-13.12-1_i386.debian.stable.tar 这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式. 解压缩方法: $xz -d ***.ta ...

  3. day04_08 while循环02

    练习题: 1.输出九九乘法表 2.使用#号输出一个长方形,用户可以指定宽和高,如果长为3,高为4,则输出一个 横着有3个#号,竖着有4个#号 的长方形. 3.如何输出一个如下的直角三角形,用户指定输出 ...

  4. cobbler常用目录/命令(三)

    常用目录: /var/www/cobbler/ks_mirror/                cobbler distro文件目录 /var/lib/tftpboot/pxelinux.cfg/d ...

  5. 在Asp.net MVC中应该怎样使用Spring.Net

    简单工厂 专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类或接口.简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一 ...

  6. Qtree

    Qtree Ⅰ 题意:https://vjudge.net/problem/SPOJ-QTREE 带修路径查询最大边权 sol :树链剖分,之后每条重链就是一个连续的区间,拿线段树维护即可  简单讲讲 ...

  7. 浅谈android反调试之轮询TracePid(解决方案是特色)

    参考文章: 1.  http://bbs.pediy.com/thread-207538.htm 2.  http://www.wjdiankong.cn/android 需求: 常见的Android ...

  8. mybatis学习(十一)——springmvc++spring+mybatis整合

    做任何一个项目都以一个需求,这里先定义一下需求:利用三大框架查询酒店列表. 一.搭建开发环境 1.创建一个web项目 我这里用的是 jdk1.8+tomact7.0 2.创建hotel表 CREATE ...

  9. XML与DTD简介

    (详细学习参考)https://blog.csdn.net/u013087513/article/details/52745509 XML约束之DTD的使用 (1)为什么要有约束? XML都是用户自定 ...

  10. 学习 JSP:第二步 创建一个JSP Web Project

    接上文 学习 JSP:第一步Eclipse+Tomcat+jre(配置环境) [创建新工程](Dynamic Web Project) 1.选择 "File-->New-->Dy ...