建议在上防御安装模块时,更多关注包的依赖关系,有可能是A包没有问题,问题出在A包依赖的B包;执行一键安装脚本或安装模块包时,更多关注包名称;使用国内源时,注意恶意包是否已被删除,有些国内源在同步官方源时,恶意包不会被删除,但有一个好处就是方便查找恶意包样本:(安装一些不确定的开源项目多在虚拟机或docker中部署,需要主机部署的控制权限。piplist|grep&&pipshow--file对恶意软件包的自我检测
构建内部可信数据包管理平台,尽可能从源头切断;构建软件包安全扫描平台,HuntingforMaliciousPackagesonPyPI方案是可行的,它主要通过以下方式进行检测:流量和行为两个部分进行检测识别:流量抓取安装导入时触发的数据流,用于检测特征和敏感dns请求等;行为上提取一些特征,例如一些作者包名称,用于静态规则匹配,以及使用sysdig抓取包安装运行时系统调用trace等;一些相关的开源工具,如Aura静态Python代码分析框架、maloss软件包管理器安全分析框架、ossmalware动态分析查找恶意模块、PypiScan、confused依赖查找系统;
创建SOAR等平台应对攻击后的快速应急响应,SOAR脚本可供参考:别慌,这回你有SOAR了——自动对PyPI仓库投毒事件作出应急响应。不同视角下相同的东西往往会出现不同的弱点,所以要选择一个“攻击者”的角度来优化手法,避免掉一些防御策略,增加对方识别到的成本和误报;下面是一个无恶意的测试,记录攻击者可能要尝试绕过的地方,并对“投毒脚本混淆”优化。
能兼容py2/3版本,能对不同系统发出不同的指令;对伪造模块的正常功能没有影响;尽量减少使用第三方依赖,可用的第三放模块直接导入或复制目录;符合一种病毒应该有的样子,已经是一种成熟的病毒了,自己会收集信息,截屏,弹出shell,后门维护等功能:(忽视了所有异常的报错,避免了恶意代码被报错输出;静态特征不检测字符串过长;防止与历史攻击样本的某些特征相似,用静态规则检测;对某些敏感的关键字如eval、exec等进行编码,以避免静态规则检测到混淆;主干木马以及持久性等C2控制,局部下马部分只做一个下马操作,避免检测到过多行为;部分特征较明显的下马文件可放置在一些非常规的后缀文件中,有的检测机制只检测py文件,从而绕过了py文件;对于域名、IP等敏感属性做一些编码或进制转换等混淆;大多数传输的数据都会检测到dns、http等,使用一些udp、icmp隧道或者加密等来传输;确定某些沙盒、docker等虚拟环境;木马主体识别一些恶意挖矿进行以及阿里云等保护进行kill掉;假模块包通过填入一些垃圾数据,或在恶意代码段和正常代码段之间填入许多空白行来迷惑分析者;编码回传C2放一个监视探头,有ip访问可能会被发现,大概知道会发现多久.