'DMSniff'POS恶意软件针对中小型企业
导语:Flashpoint的研究人员发现POS恶意软件DMSniff使用域名生成算法(DGA)来动态创建命令和控制域列表。此外他们还分享了有关恶意软件和相应控制面板代码的一些细节。
之前仅私下销售的销售点恶意软件已被用于攻击中小型餐饮和娱乐行业。此恶意软件称为DMSniff,它还使用域名生成算法(DGA)来动态创建命令和控制域列表。该技术对攻击者很有价值,因为如果域名被执法部门,技术公司或托管服务提供商屏蔽,恶意软件仍然可以通信和接收命令或共享被盗数据。
Flashpoint的研究人员认为,在POS恶意软件领域很少见到使用DGA。
POS软件继续困扰着食品服务和酒店等行业,其中老旧和不受支持的系统仍然普遍存在,特别是在中小型公司中。在这些以卡片交易为主的环境中,犯罪分子一直在瞄准这些易受攻击的设备。去年Verizon Data Breach调查报告中的数据显示,销售点终端是数据库服务器背后受攻击次数最多的第二大网络资产。
大多数情况下,恶意软件会在信用卡数据加密并发送到支付处理器之前,窃取信用卡Track 1和Track 2信息。攻击者可能在物理上篡改POS设备以安装恶意软件,或者可以通过网络利用漏洞来感染设备。
DMSniff已经隐蔽运行了至少四年,并至少从2016年开始被积极使用。Flashpoint分析人员认为使用DMSniff的攻击者通过暴力攻击SSH或扫描并利用漏洞来获得设备的初步立足点。
下面,我们分享有关恶意软件和相应控制面板代码的一些细节。此外,我们还分享了一些缓解措施和IoCs。
一、深入DMSniff
DMSniff使用多种技术来保护自己及其命令与控制(C2)通信。 第一种技术是下面的简单字符串编码,旨在隐藏其字符串。 这可以增强恶意软件的检测能力,使研究人员难以了解其功能。
图1:DMSniff使用的字符串编码
基于Python的伪代码实现如下:
图2:基于Python伪代码的字符串编码。
使用它,Flashpoint解码了选择字符串,可以在下面下载。此恶意软件使用的另一种技术是DGA,它可以抵御下线并绕过琐碎的阻塞机制。
图3:恶意软件的初始DGA。
DGA基于诸多硬编码值; 在研究人员发现的样本中,生成的域名的前两个字符在bot中是硬编码的。到目前为止,研究人员已经发现了这种DGA的11种变形,它们都采用相同的算法,但使用了可变的前两个字母和硬编码的乘子。
图4:域名生成算法的伪代码
bot循环生成的域名并同时轮换顶级域名(TLD)列表 - 例如.in,.ru,.net,.org,.com-直到找到可以与之通信的服务器。然后,bot创建hostid数据并在user-agent内部发送。
图5:恶意软件签到示例
值得注意的是虚假响应,它伪装成一个错误。 响应中还有一些数据被注释为“vqns”; 这由bot验证,以确定它是否是真正的C2域。
图6:用于解析注释块的恶意软件代码
对于POS的数据盗窃部分,bot程序很简单,因为它附带了一个要规避的进程名的列表; 它在循环遍历进程树时使用此列表。 每当它找到一个有趣的进程时,它将遍历内存尝试查找信用卡号。 一旦找到,bot将获取卡数据和一些周围的内存,打包,并将其发送到C2。
图7:编辑的DMSniff面板
被盗数据在下载或审查后,将从面板中删除,这意味着被盗数据将被泄露到其他地方,以便存储或出售。
以下是负责在发送后删除面板中报告的PHP代码:
//- del all sent $das = $_GET[‘das’]; if (!empty($das)) { $dh = opendir($dirn); if (!$dh) { echo “cant open dir”; die(); } while (($file = readdir($dh)) !== false) { if ($file[0] != ‘d’) continue; if ($file[1] != ‘_’) continue; if (!strpos($file,”.SENTOK”)) continue; if (defined(“MARKER”)) { $exp=explode(‘_’,$file); if ($exp[1] != MARKER) continue; } unlink($file); } }
在面板中,添加了解锁报告所需的XOR值; 然后,控制面板将验证数据。 在撰写本文时,所有识别的面板和bot都使用相同的单字节XOR值“0xd”或“13”。
图8: DMSniff报告,用于检索面板中的被盗数据
被盗数据文件基于bot数据和标记值:
$filedst = DMPPATH.’/d_’.$mrk.’_’.$realip.’_’.mktime();
标记值的长度为0-2:
$mrk = $_GET[‘m’]; if (strlen($mrk) > 2) die(); // hack protection
这是创建.upl文件,表示bot已上传数据的位置:
$fnm = my_base64_encode($exp[1]); $f = fopen(INFOPATH.$fnm.’.upl’,”w”); $data = mktime().’|’.$exp[1].’|’.$realip.’|’; fputs($f,$data); fclose($f);
如果上传成功,则返回 <!-OK-> :
if ($filear[“error”][0] == 0) echo “<!-OK->”;
用于解析bot checkin的面板代码:
$ua = getenv(‘HTTP_USER_AGENT’); $pos = strpos($ua,’DSNF_’);
从中返回的数据是PID(进程标识符)的字符串编码,每个数字都加了“a”,硬编码的mul值类似于DGA并存储在假404页面的注释中。
$tmp = substr($ua,$pos+5); $exp = explode(‘)’,$tmp); $pid = $exp[0]; echo “<!-“.chr(97+ToRange($pid)).chr(97+ToRange(3*$pid)).chr(97+ToRange(5*$pid)).chr(97+ToRange(7*$pid)).”->”;
如果通过.prt文件设置了shell命令,则会添加另一条注释:
// shl cmd if (file_exists(INFOPATH.$fnm.’.prt’) ) { $shl = file_get_contents(INFOPATH.$fnm.’.prt’); $exp = explode(‘|’,$shl); echo “<!-#”.$exp[0].”->”; } }
包括bot连接的 ip:port,下载和执行文件。机器人使用FTP来完成下载辅助文件的操作。
结论
DMSniff是不断增长的Pos恶意软件世界中的一个成员。 在研究中,我们发现这种恶意软件主要针对中小型企业,如餐馆和剧院。 它还包含域名生成算法,这在Pos恶意软件中很少见。
缓解措施
Flashpoint建议机构定期更新所有攻击面设备。 疑似感染途径是SSH暴力破解(低信度)和常见漏洞扫描程序(低信度)。对如下下文件的基于主机的检测也是有益的:
dmsnf.cfg
还需监视异常Windows进程的执行情况,例如:
Image=”*csrss.exe” AND (ParentImage!=”*system” OR ParentImage!=”*smss.exe”) Image=”*lsass.exe” AND ParentImage!=”*wininit.exe”
与所有基于主机的指标一样,可能需要根据环境进行调整。
附件及下载
• 要下载DMSniff的IOC,单击此处.
• 要下载DMSniff的解码字符串, 单击此处.
发表评论