导语:0x01 前言 ADB.Miner安卓设备挖矿这件事情还是在年前的2月8号,360安全团队,发布安全预警,看到这消息,其实很吓人,公网上暴露的安卓设备如果都用来挖矿,这不是发了?于是我在公网上启动了国内网段扫描,看看到底有多少设备暴露
0x01 前言
ADB.Miner安卓设备挖矿这件事情还是在年前的2月8号,360安全团队,发布安全预警,看到这消息,其实很吓人,公网上暴露的安卓设备如果都用来挖矿,这不是发了?于是我在公网上启动了国内网段扫描,看看到底有多少设备暴露,蹭一下热点。
0x02 扫描TCP 5555端口
咱也没有360scanmon这么高科技的威胁情报基础设施,只能自食其力,使用的扫描软件是嘶吼发表的以溯源为目的蜜罐系统建设中的扫描软件,不过做了一下改良,因为当时扫描有一个问题,通过用空间换时间的策略,速度提升了很多,但是也暴露了一个问题,没有办法实时查看扫描结果。Masscan扫描阶段需要3天,Nmap扫描需要大约7天,这个太耽误事了,
·扫描优化
csvfile = file('5555.csv', 'wb') writer = csv.writer(csvfile) while not g_queue.empty(): item = g_queue.get() result = "result"+item.strip()+".xml" p = subprocess.Popen("/usr/bin/nmap -oX "+result+" -sV -p5555 "+item, shell=True) p.wait() if p.returncode == 0: nmap_report = NmapParser.parse_fromfile(result) for scanned_hosts in nmap_report.hosts: print scanned_hosts.address for serv in scanned_hosts.services: if serv.state == "open": m = serv.service_dict.get('extrainfo', '') print m if m.find('\'') != -1: pass else: writer.writerow([scanned_hosts.address, str(serv.port), serv.service, serv.service_dict.get('product', ''), serv.service_dict.get('version', ''), serv.service_dict.get('extrainfo', '')])
这样随时可以随时看到扫描结果。
wc -l 5555.csv 465662 5555.csv
最终扫描结果大约46万多个IP开放了5555端口
·扫描结果处理
使用pandas聚类分析一下开放的服务类型出现的次数
#coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pandas as pd userdata =pd.DataFrame(pd.read_csv('/Users/xxx/Desktop/5555.csv',header=0)) two_userdata = userdata.groupby('service').size().sort_values(ascending=False)[:10] two_userdata.plot(kind='barh', color='#d62728', alpha=0.5, rot=0) plt.xlabel(u'出现次数') plt.ylabel(u'服务类型') plt.legend() plt.show()
可以看出36万多IP开启freeciv服务。还有9万多IP做了端口转发
备注: Nmap扫描会出现freeciv? 这说明nmap也无法确认指纹的准确性。所以,数据需要提纯。
Starting Nmap 6.40 ( http://nmap.org ) at 2018-02-13 23:02 CST Nmap scan report for 14.29.49.198 Host is up (0.039s latency). PORT STATE SERVICEVERSION 5555/tcp openfreeciv?
0x03 如何判断通过adb远程安装apk文件?
·入侵流程
首先在自己的服务器或者个人电脑上安装adb软件,目的是启动ADB Server,因为adb协议是双向监听端口,其次可以运用adb connect、adb –s install apk等命令。
安装完成后运行:adb start-server 本地监控5037端口。
然后开启多线程扫描连接开放TCP 5555的IP设备
while not g_queue.empty(): item = g_queue.get() p = subprocess.Popen("adb connect "+item+"",stdout=subprocess.PIPE,shell=True) line = p.stdout.readline() print line ret1 = line.find('connected') print ret1 if ret1==0: print item writer.writerow([item]) p.wait()
扫描结果如下:发现很多设备offline。
·探究原因
在本机实验,使用夜神Android模拟器,google的模拟器也成就是太大了,科学上网流量不够。开启USB调试
连接本地62001端口。
安装apk程序。
界面上显示安装成功。
好可怕根本没啥认证。。。
但是通过远程连接扫描的终端是行不通的。可以判断绝大部分设备都没有开启USB调试。
0x04 总结
经过以上实践,我们发现对外TCP 5555端口扫描流量肯定是有的,但是成功安装apk挖矿恶意软件并不是很多。所以安全研究应该以事实说话。