如何让你的服务屏蔽Shodan扫描
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扫描的更多相关文章
- Shodan新手入坑指南
*本文原创作者:xiaix,本文属FreeBuf原创奖励计划,未经许可禁止转载 亲们~黑五 Shodan Membership 只要5刀,你剁手了没? 什么是 Shodan? 首先,Shodan 是一 ...
- nmap脚本扫描使用总结
nmap的脚本默认目录为:/usr/share/nmap/scripts/ Nmap提供的命令行参数如下 -sC: 等价于--script=default,使用默认类别的脚本进行扫描 可更换其他类别 ...
- Hacker(16)----防范端口扫描与嗅探
端口扫描与嗅探都是黑客常用的招数,其目的是定位目标计算机和窃取隐私信息.为确保自己计算机的安全,用户需要掌握防范嗅探与端口扫描的常见措施,保障个人隐私信息安全. 一.掌握防范端口扫描的常用措施 防范端 ...
- 2018-2019-2 20165205 《网络对抗技术》 Exp6 信息收集与漏洞扫描
2018-2019-2 20165205 <网络对抗技术> Exp6 信息收集与漏洞扫描 实验目标 掌握信息收集的最基本技能与常用工具的方式 实验内容 各种搜索技巧的应用 DNS IP注册 ...
- 2017-2018 Exp6 信息搜集与漏洞扫描 20155214
目录 Exp6 信息搜集与漏洞扫描 实验内容 信息收集 漏洞扫描 知识点 Exp6 信息搜集与漏洞扫描 收集渗透目标的情报是最重要的阶段.如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性. ...
- 20155320 Exp6 信息搜集与漏洞扫描
20155320 Exp6 信息搜集与漏洞扫描 [实验后回答问题] (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管 ...
- 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 ...
- 黑暗世界的搜索引擎 https://fofa.so/ https://www.shodan.io https://www.zoomeye.org 查找设备漏洞
from:http://www.freebuf.com/sectool/121339.html 什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎 ...
- Shodan 使用
本文来自:Shodan新手入坑指南, 记录简要用法,以便使用. 文章先给出搜索过滤方法,然后再简单介绍两种使用shodan的方法:使用命令和编写代码. 搜索过滤 hostname:搜索指定的主机或域名 ...
随机推荐
- UVa 1452 递推 Jump
约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...
- luogu2951 noip2017 小凯的疑惑
在考场上我们可以打表发现规律是 $ ab-a-b $ .下面给出证明(看的网上的). 若有正数 $ x $ 不能被 $ a $ , $ b $ 组合出,假设 $ a>b $ ,则存在 \[ x= ...
- Install Oracle 11G Release 2 (11.2) on Oracle Linux 7 (OEL7)
Install Oracle 11G Release 2 (11.2) on Oracle Linux 7 (OEL7) This article presents how to install Or ...
- [译]PYTHON FUNCTIONS - MAP, FILTER, AND REDUCE
map, filter, and reduce Python提供了几个函数,使得能够进行函数式编程.这些函数都拥有方便的特性,他们可以能够很方便的用python编写. 函数式编程都是关于表达式的.我们 ...
- mq类----2
手动应答方式 使用get my_consumer.php 消费者 生产者和上一篇 一样 <?php /** * Created by PhpStorm. * User: brady * Dat ...
- Android内存使用——垃圾回收LOG,GC_CONCURRENT等的意义的说明
在调试程序的时候,经常发现GC_CONCURRENT之类的打印.在网上搜了一下,感觉说法各式各样.最后,在Google的官方网站上发现了详细介绍. Every time a garbage colle ...
- Kafka介绍 (官方文档翻译)
摘要:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动 ...
- 【Vjudge】P558E A Simple Task(线段树暴力)
题目链接 这题……太暴力了吧…… 开二十六棵线段树维护l到r字符i出现的次数,然后修改的时候暴力修改,输出的时候暴力输出……就过了…… 然后我还没想到…… qwq #include<cstdio ...
- Luogu【P1880】石子合并(环形DP)
先放上luogu的石子合并题目链接 这是一道环形DP题,思想和能量项链很像,在预处理过程中的手法跟乘积最大相像. 用一个m[][]数组来存储石子数量,m[i][j]表示从第 i 堆石子到第 j 堆石子 ...
- 算法复习——扫描线(hdu1542)
题目: Problem Description There are several ancient Greek texts that contain descriptions of the fable ...