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. [转] WEB前端学习资源清单

    常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...

  2. python-高级编程-07-端口

    TCP和UDP协议中都有端口这个概念,但是端口却不是IP协议的一部分 端口的出现主要是为了给协议栈和应用对应 .协议栈端口号将数据分配给不同的应用程序 .应用层程序用端口号去区分不同的链接 TCP 和 ...

  3. Balanced Lineup(ST)

    描述 For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. On ...

  4. Spring 4.3.11.RELEASE文档阅读(一):overview

    一.宏观概述中的体会和发现 Spring是组件式的框架,它允许我们只使用其一小部分.Spring所做的工作,就是不断的简化我们的操作.比如它的IOC容器,当我们自己应用设计模式,比如说:建造者.工厂. ...

  5. rsync配置和同步数据

    rsync的搭建配置1.环境和配置文件 rsyncd.conf(主配置文件) rsyncd.secrets(密码文件) pc1:192.168.0.1,rsync的服务器,配置rsyncd.conf文 ...

  6. 【bzoj2521】[Shoi2010]最小生成树 网络流最小割

    题目描述 Secsa最近对最小生成树问题特别感兴趣.他已经知道如果要去求出一个n个点.m条边的无向图的最小生成树有一个Krustal算法和另一个Prim的算法.另外,他还知道,某一个图可能有多种不同的 ...

  7. Spring Boot 必须先说说 Spring 框架!

    现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下. Spring Boot ...

  8. THUWC2018爆0记

    Day-2 心里想到要明天就要出发,去长沙膜拜各省dalao,心里挺激动,, 细细整理着行囊 Day-1 一觉睡到天明,正好是星期一,大家都要上课,也没怎么听物理老师讲什么. 到了9:30,就背着包拖 ...

  9. oracle distinct 用法

    oracle distinct 是所有字段都相同才显示一条,要做到根据某一列,则如下 select t1.* from table t1 where t1.rowid = (select min(t2 ...

  10. python tab 自动补全

    学习python,经常要使用python命令行查找一些不熟悉的使用方法等等,但是python命令行下没有自带tab补全的功能,看见别人写了tab,可以解决特此记下,以备后用 1.创建tab.py文件, ...