导语: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()

image.png

可以看出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文件?

·入侵流程

image.png

首先在自己的服务器或者个人电脑上安装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。

image.png

·探究原因

在本机实验,使用夜神Android模拟器,google的模拟器也成就是太大了,科学上网流量不够。开启USB调试

image.png

连接本地62001端口。

image.png

安装apk程序。

image.png

界面上显示安装成功。

image.png

好可怕根本没啥认证。。。

但是通过远程连接扫描的终端是行不通的。可以判断绝大部分设备都没有开启USB调试。

image.png

0x04 总结

经过以上实践,我们发现对外TCP 5555端口扫描流量肯定是有的,但是成功安装apk挖矿恶意软件并不是很多。所以安全研究应该以事实说话。

源链接

Hacking more

...