<header><h1 class="entry-title">【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告阿斯顿发送到发送</h1></header><p><span class="abstract">摘要</span></p><p>C&C服务器地址WireX家族病毒基本上都会在内部硬编码存放两个URL地址(部分变种的URL经过加密),变种A在内部硬编码了如下两个URLhttp:u.*.store/?utm_source=tfikztteuichttp:g.*.store/?utm_so…</p><p><br/></p><center><img width="600" title="4ab290ee-5cad-4c4a-bb2c-b8e2b5a1a229.jpg" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537560101882.jpg"/></center><p style="text-indent: 2em;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 18px;"><br/></span></strong></p><p style="text-indent: 2em;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 18px;">C&C服务器地址</span></strong></p><p style="text-indent: 2em;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 18px;"></span></strong></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">WireX家族病毒基本上都会在内部硬编码存放两个URL地址(部分变种的URL经过加密),变种A在内部硬编码了如下两个URL</span></p><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></p><table class="syntaxhighlighter plain"><tbody><tr class="firstRow"><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div></td><td class="code"><div class="line number1 index0 alt2"><code class="plain plain">http://u.*.store/?utm_source=tfikztteuic</code></div><div class="line number2 index1 alt1"><code class="plain plain">http://g.*.store/?utm_source=tfikztteuic</code></div></td></tr></tbody></table><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">这些URL地址是病毒的C&C Server的地址,用于返回要攻击的网站的信息,不同之处在于,对这两个URL返回的信息,处理方式不同,执行的恶意行为也不同。</span></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";"><br/></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";">UDP Flood攻击</span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></strong></span></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">对于以u开头的URL地址,比如</span></p><table class="syntaxhighlighter plain"><tbody><tr class="firstRow"><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="line number1 index0 alt2"><code class="plain plain">http://u.*.store/?utm_source=tfikztteuic</code></div></td></tr></tbody></table><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">(实际测试不能正常返回数据,以下是根据代码逻辑进行描述的),返回数据分为两部分,一个要攻击的主机地址,一个是端口,中间使用字符串“snewxwri”分割,代码中对返回数据处理如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="293f7145-05fe-44d0-b360-9f7ccfc08ff8.jpg" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537561513455.jpg"/></center><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">获得主机地址和端口号之后,会创建50个线程,每个线程中都会连接该主机和端口,开启socket之后,使用udp协议发送随机数据,每次回发送512个字节的数据,一个线程中一共会发送
10000000 (一千万)次,也就是 1000512=5120000000
字节的数据,因为一共实现了创建了50个线程,所以,理论上会发送1000512*50=256000000000(2560亿)字节,实现代码如下所示:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img title="cead9738-7102-4932-81b7-6d9d0205b7c3.png" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537561103246.png"/></center><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></p><center><img width="600" title="3e989cf0-175d-42ca-98c2-d84135f12208.png" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537561857924.png"/></center><p style="text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"><br/></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";">Deceptive Access Attack</span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></strong></span></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">对于以g开头的URL地址, 比如 </span></p><table class="syntaxhighlighter plain"><tbody><tr class="firstRow"><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="line number1 index0 alt2"><code class="plain plain">http://g.*.store/?utm_source=tfikztteuic</code></div></td></tr></tbody></table><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">,返回数据分为3部分,分别是访问要攻击的网站的URL、UserAgent和Referer,使用硬编码的字符串(比如<strong>snewxwri</strong> )进行分割,代码中对返回数据处理如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="134df5a7-f29d-49ea-87de-354f9940fe51.jpg" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537562804565.jpg"/></center><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">获得要攻击网站用到的<strong>
URL</strong>、<strong>UserAgent</strong>和<strong>Referer</strong>后,会创建20个Webview,然后使用每个WebView访问要攻击的网站,代码实现如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="d7ee3fb7-8f8c-4e89-aa88-66a69f6ee993.png" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537562134345.png"/></center><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"><br/></span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";">Deceptive Click Attack</span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></strong></span></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">变种B内置了2个URL地址,如下:</span></p><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></p><table class="syntaxhighlighter plain"><tbody><tr class="firstRow"><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div></td><td class="code"><div class="line number1 index0 alt2"><code class="plain plain">http://ww68.c..us/?utm_source=tfikztteuic</code></div><div class="line number2 index1 alt1"><code class="plain plain">http://ww68.d.**.us/?utm_source=tfikztteuic</code></div></td></tr></tbody></table><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">请求这两个URL返回的数据是类似的,都是在HTML的<strong>title</strong>中设置了一段内容,这段内容使用一个硬编码的字符串(比如<strong>”eindoejy”</strong>)分隔成3或者4部分,前3部分都是一样的,一个<strong>
URL</strong>,一段<strong>JS代码</strong>,一个<strong>UserAgent</strong>,后面可能还有一个字段,猜测为国家名字缩写,该样本中为<strong>CN</strong>(代表中国?)。请求你的地址和返回的数据,类似下图:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="5bec5084-8a31-4272-a003-5f9cc07e2fdc.jpg" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537562298855.jpg"/></center><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">该病毒对这些数据的处理方式是,使用WebView加载返回URL,然后在页面加载完成后,执行那段JS代码,JS代码的功能是从页面中所有的URL link(通过查找html的a标签获得)中,随机挑选一个,模拟鼠标事件进行点击,实现代码如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="28156fb7-03c3-4c7f-ba2d-b46acdc3a19f.jpg" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537563108332.jpg"/></center><p style="text-indent: 2em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">实现模拟鼠标点击JS代码如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img width="600" title="73d86bbb-10ca-4c6b-864c-aa415b5e71ba.png" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537563590266.png"/></center><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"><br/></span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";">Attack Controller</span></strong></span></p><p style="text-indent: 2em;"><span style="font-size: 18px;"><strong><span style="font-family: 微软雅黑, "Microsoft YaHei";"></span></strong></span></p><p style="text-indent: 2em;"><span style="text-indent: 2em; font-family: 微软雅黑, "Microsoft YaHei";">上述几种攻击的实现都是位于某个Android Service中,那么这几种攻击是怎么启动的呢?通过逆向分析APK得知, 该APK注册了监听某些事件的<strong>Broadcast Receiver</strong>,比如network
connectivity change、device admin enabled等,在这些Receiver中,会启动Attack
Controller这个Service, Attack Controller负责启动各种Attack,代码实现如下:</span></p><p style="text-align: center; text-indent: 0em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";"> </span></p><center><img title="f0db29ce-2bfc-404e-92ea-087826d79d62.png" alt="【病毒分析】360烽火实验室:关于“WireX Botnet”事件Android样本分析报告" src="/test_images/ueditor/php/upload/image/20171229/1514537564101800.png"/></center><p><span style="font-family: 微软雅黑, "Microsoft YaHei";">不同的变种,实现方式有些差别,攻击的强度也又有所差别,这个变种中,每隔<strong>55秒</strong>都会重启一次攻击</span></p><p><br/></p><p><span style="font-family: 微软雅黑, "Microsoft YaHei";">对于widi的搭建学习,以及相关二次开发需要不断完善。</span></p><p><span style="font-family: 微软雅黑, "Microsoft YaHei";"><br/></span></p><p><br/></p>