特别工具 Shodan 上手指南[文末福利]

/ 0评 / 3

Shodan是个搜索引擎(网址:https://www.shodan.io/),不过,是个很特殊的搜索引擎,而且价格昂贵,不过,这是有办法解决的,当然,使用之前就得好好把握尺度了,如果你是想干什么坏事,那就此打住吧.

你首先需要申请一个福利账号.(从截图应该得知福利点在哪里了吧,我就不继续细说了,至于看不懂这个图上信息的,建议就此放弃,因为,自己购买套餐价格非常昂贵,大约2100软妹币一个月,当然,土豪除外.)

当你读到这里,说明你还是有兴趣知道这是什么玩意的.那么Shodan是怎么工作的呢?Shodan 通过扫描全网设备并抓取解析各个设备返回的各种信息,不管同意还是拒绝,都会被记录下来.我们通过这个引擎,可以找到很多感兴趣的东西,比如漏洞主机,CDN后端的服务器.

另外,当你准备使用Shodan的时候,你就准备着耐心点,要花上很多时间,才能达到目的,这是非常正常的,甚至是,花了很多时间,什么都没做到.

一开始先说说积分,就是关于钱的问题.

官方介绍三种积分:https://help.shodan.io/the-basics/credit-types-explained

我们通过特殊手段可以拿到这么多,不会累计到下一个月,理论上下一个月继续给积分.

Export credits是通过Shodan官网下载数据时使用,一个积分可以到处1万数据,不够1万往上取整.

在线导出比较耗费他的服务器资源,所以送的分数也少,而且是异步导出,速度还稍微慢一些.

Query Credits是通过命令/API搜索时候花费的,每100个结果,就需要耗费1调query积分,不会往上取整,但是通常我们搜索以下,可能有很多结果的,那么我们看返回的数量来决定花费多少.

Scan Credits是最高级的东西,比如你想立马让Shodon扫描某个网络,每个IP就得耗费一个Scan Credits,当然,我们就算不主动扫,Shadon也是经常扫描全网设备,返回结果所需时间比较长.

使用搜索过滤

如果像前面单纯只使用关键字直接进行搜索,搜索结果可能不尽人意,那么此时我们就需要使用一些特定的命令对搜索结果进行过滤,常见用的过滤命令如下所示:

搜索实例

找一些SOCKS代理:

product:socks

查找位于合肥的 Apache 服务器:

apache city:"Hefei"

查找位于国内的 Nginx 服务器:

nginx country:"CN"

查找 GWS(Google Web Server) 服务器:

"Server: gws" hostname:"google"

查找指定网段的华为设备:

huawei net:"61.191.146.0/24"

另外,作为特殊福利账号,还可以搜索vuln:

福利账号还可以点击Map,进入分布图.红点位置,则是较多设备所在的位置.

一般情况下,会和命令行配合使用,然后导出结果给脚本用.

安装起来非常方便哈.(当然你也可以用pip,不过Python 2马上EOL了.)

pip3 install shodan

然后初始化一下.

shodan init [API_Key]

获取到在中国的Apache和Lightpd数量,后者真是少啊.

root@debian:~# shodan count apache country:"CN"

1887729

root@debian:~# shodan count lighttpd country:"CN"

78000

root@debian:~# shodan count lighttpd country:"CN" port:80

9033

我们可以下载所有lighttpd并且开放了80端口的数据,这里超过1000条,需要指定limit参数,下载其实就是循环查询,如果觉得烦的话网页导出也是可以的,只是成本更高一些.

实测导出上述的9000条数据大概10分钟.

root@debian:~# shodan download --limit 9000 lighttpd lighttpd country:"CN" port:80

Search query:			country:CN port:80

Total number of results:	9033

Query credits left:		199760

Output file:			lighttpd.json.gz

  [###################################-]   99%  00:00:00

Saved 9000 results into file lighttpd.json.gz

root@debian:~# 

然后用解释命令解释成数据.(省略部分)

root@debian:~# shodan parse --fields ip_str,port,org --separator , lighttpd.json.gz 

125.76.225.166,80,China Telecom (Group)

115.231.50.251,80,China Telecom Ningbo

124.227.187.236,80,AnQing

124.225.165.63,80,China Telecom Hainan

61.191.49.181,80,China Telecom Anhui

42.4.16.252,80,UNICOM Liaoning

211.152.136.73,80,Tencent cloud computing

122.138.91.64,80,China Unicom Jilin

39.96.132.24,80,Hangzhou Alibaba Advertising Co.,Ltd.

202.142.28.163,80,CNISP-Union Technology (Beijing) Co.

59.37.133.180,80,China Telecom Guangdong

39.96.223.193,80,Hangzhou Alibaba Advertising Co.,Ltd.

198.1.166.122,80,YangsheNin

39.96.188.210,80,Hangzhou Alibaba Advertising Co.,Ltd.

182.61.181.83,80,Beijing Baidu Netcom Science and Technology Co.

61.155.209.232,80,China Telecom jiangsu province backbone

112.126.232.236,80,Hangzhou Alibaba Advertising Co.,Ltd.

106.12.32.226,80,Beijing Baidu Netcom Science and Technology Co.

113.247.232.74,80,China Telecom Hunan

106.14.65.125,80,Hangzhou Alibaba Advertising Co.,Ltd

当然你也可以把上述归类成单一的search命令,但是如果你进行第二次搜索,将花费更多的资源.

另外一个功能叫立即扫描,要花Scan Credits的,而且Shodan其实只扫描常见的三四百个端口,异步结果.(目标可以是CIDR格式分割.)

shodan scan submit 52.160.131.0/24

然后会立即提交,如果返回No open ports found or the host has been recently crawled and cant get scanned again so soon.则代表扫描已经开始,你就等吧.

使用下面命令返回扫描状态.

shodan scan list

必须记得这些ID,我们等下可以用来下载结果的,这是最新鲜结果哦.(只有DONE可以被下载)

root@debian:~# shodan download --limit -1 scan-results.json.gz scan:xYu0J55y7v1H38pR 



Search query:			scan:xYu0J55y7v1H38pR

Total number of results:	1

Query credits left:		199670

Output file:			scan-results.json.gz

  [####################################]  100%

Saved 1 results into file scan-results.json.gz

root@debian:~# 

之前说到,Shodan默认只扫描常见端口,我们可以扫描特定端口,而且可以扫描整个互联网特定端口.比如,我要找6022端口的SSH服务.

shodan scan internet 6022 ssh

不过呢,由于福利版本是不能这么干的,所以,也没实测过,估计要到结果也非常久了.

最后啊,还请大家合法利用哈.


福利API Key:

PB2X9cub5LhLxOIdsomKVqtlxjSIdi3Y