Linux下应急溯源常用命令 您所在的位置:网站首页 木马是从哪里来的 Linux下应急溯源常用命令

Linux下应急溯源常用命令

2024-03-30 05:13| 来源: 网络整理| 查看: 265

作者:r0n1n 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

0x00 前言

在各企业面对黑客入侵影响业务正常运行的安全事件时,首先要定位事件发生的时间,地点,之后对黑客攻击手法进行回溯黑客画像(主要判断黑客攻击手法及其路径,他从哪里进来的?他在服务器上做了什么?怎么追踪?),从而更精准的定位黑客身份信息,来降低后续损失。

0x01 常用命令 1、账号相关 #查询特权用户特权用户(uid 为0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd root #查询可以远程登录的帐号信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow root:$1$VJkWOIro$gRi9wy.FrsUE/W5oc3vVS.:18644:0:99999:7::: xxxxx:$1$VJkWOIro$gRi9wy.FrsUE/W5oc3vVS.:18644:0:99999:7::: [root@localhost ~]# #查看当前登录用户(tty 本地登陆 pts 远程登录) /var/log/utmp w/who 2、程序相关

需要查看当前异常系统进程,及额外开放端口。

#查看当前开放端口 netstat -tnlp #查看当前系统上运行的所有进程 ps -ef #查看进程 ps aux | grep pid #可以直接看到进程实时情况 top #查看cpu占用率前十的进程,互补top ps aux --sort=pcpu | head -10

在这里插入图片描述

3、日志相关 日志默认存放位置:/var/log/ 查看日志配置:more /etc/rsyslog.conf

在这里插入图片描述

#查看系统的成功登录、关机、重启等 /var/log/wtmp last #查看登陆失败的用户日志 /var/log/btmp lastb #查看所有用户登陆日志 /var/log/lastlog lastlog #查看谁在使用某个端口 lsof -i :5001 #查看内部对外的网络连接 lsof -nPi #集诊断、调试、统计一体的工具。`strace -f -p pid` 查看进行的行为 Strace #Linux工具,如果系统命令被替换了可以使用此命令来查看系统相关信息。 busybox

3.1 定位爆破root帐号来源IP

#grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more #定位有哪些IP在爆破: grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c #爆破用户名字典是什么? grep "Failed password" /var/log/secure|perl -e 'while($_=){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

3.2 查询登录成功的IP

#last命令,它会读取位于/var/log/wtmp的文件,并把该文件记录的登录系统的用户名单。 #grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

3.3 查询增加用户日志

#登录成功的日期、用户名、IP: #grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' #grep "useradd" /var/log/secure Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001 Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali , shell=/bin/bash Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali

3.4 查询删除用户日志

# grep "userdel" /var/log/secure Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali' Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali' Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'

3.5 查询su切换用户记录

#sudo -l Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user test by root(uid=0) 4、启动项相关

在这里插入图片描述

#开机启动配置文件 /etc/rc.local /etc/rc.d/rc[0~6].d

只要将脚本放到/etc/rc.d目录下,再创建软连接ls -s /etc/rc.d/rc*.d就可以完成自启动项设置

#检查启动项文件脚本 more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/ 5、定时任务 #排查以下文件 /var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/* #查看目录下所有文件 more /etc/cron.daily/* 6、文本相关

1、grep查找前后数据

#显示1.txt文件里匹配ffuck字串那行以及上下5行 grep -C 5 fuck 1.txt #显示foo及前5行 grep -B 5 fuck 1.txt #显示foo及后5行 grep -A 5 fuck 1.txt

2、grep查找含有某字符串的所有文件

grep -rn "fuck" * * : 表示当前目录所有文件,也可以是某个文件名 -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写

3、显示文件几行

#从第100行开始,显示200行,显示100~299行 cat shell.php | tail -n +100 | head -n 200 7、其他相关

1、查看最近改动的各类脚本文件和其他文件

#查找24小时内被修改的JSP文件 find ./ -mtime 0 -name "*.jsp" find ./ -mtime 0 -name "*.php" #查看密码文件上一次修改的时间(最近改动) stat /etc/passwd #查看除无法登录以外的用户,有无新增 cat /etc/passwd | grep -v nologin #查看哪些用户为root权限,有无新增 cat /etc/passwd | grep x:0 #查看哪些用户使用shell cat /etc/passwd | grep /bin/bash

在这里插入图片描述 2、域名hosts

vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 0x02 History高级玩法

Linux系统下可通过history命令查看用户所有的历史操作记录,在应急响应溯源中起着非常重要的作用,但在未进行附加配置情况下,history命令只能查看用户历史操作记录,并不能区分用户以及操作时间。

方法一 详细配置history 1、命令历史记录中加时间

默认情况下如下图所示: 在这里插入图片描述

export HISTTIMEFORMAT='%F %T ' //设置历史记录中带上命令执行时间

注意:%T和后面的%T '之间有空格,不然查看历史记录的时候,时间和命令之间没有分割。

如果要全用户都启用,配置可以写在/etc/profile中, 如果要对指定用户做配置,配置可以写在/home/$USER/.bash_profile中。 在这里插入图片描述

source .bashrc //使配置立即生效执行

我们再查看history记录,可以看到记录中带上了命令执行时间。 在这里插入图片描述

2、修改全局配置,支持全用户

如果想要实现更细化的记录,比如登陆过系统的用户、IP地址、操作命令以及操作时间一一对应,可以通过在配置文件里面加入以下代码实现:(注意空格)

export HISTTIMEFORMAT="%F %T`who \-u am i 2>/dev/null| awk '{print $NF}'|sed \-e 's/[()]//g'` `whoami`"

在这里插入图片描述 修改配置并加载后,history记录如下,时间、IP、用户及执行的命令都一一对应。 在这里插入图片描述 但是这种方法只是设置了环境变量,攻击者unset掉这个环境变量,或者直接删除命令历史,这就没办法直接查看了。 针对这样的问题,通过修改bash源码,让history记录通过syslog发送到远程logserver中,大大增加了攻击者对history记录完整性破坏的难度。

方法二、修改bash源码 1、修改bash源码,支持syslog记录

下载bash源码:gnu.org,系统需要安装gcc等编译环境,使用bash4.4版本做演示。

修改源码:vim bashhist.c 分别添加:User=%s CMD=%s 在这里插入图片描述 修改源码:vim config-top.h,取消 /* #define SYSLOG_HISTORY /这行的注释/ */ 在这里插入图片描述

2、开始安装 ./configure --prefix=/usr/local/bash //编译检查 make //编译成二进制 make install //默认安装在/usr/local/

安装成功后对应目录如下: 在这里插入图片描述 此时可以修改/etc/passwd中用户shell环境,也可以用编译好的bash文件直接替换原有的bash二进制文件,但对原文件做好备份。 在这里插入图片描述

usermod -s /usr/local/bash/bin/bash test

替换时注意: 1、一定要给可执行权限,默认是有的,不过有时候下载到windows系统后,再上传就没有可执行权限了,这里一定要确定,不然你会后悔的; 2、替换时原bash被占用,可以修改原用户的bash环境后再进行替换。

查看效果,我们发现history记录已经写到了/var/log/message中。 在这里插入图片描述 如果要写到远程logserver,需要配置syslog服务,具体配置这里不做详细讲解,大家自己研究,发送到远端logserver效果如下图所示。 在这里插入图片描述 通过以上方法,可以有效保证history记录的完整性,避免攻击者登录系统后,通过取消环境变量、删除history记录等方式抹掉操作行为,为安全审计、应急响应、溯源分析等提供了完整的原始数据。

0x03 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!! 欢迎关注我们的安全公众号,学习更多安全知识!!! 欢迎关注我们的安全公众号,学习更多安全知识!!! 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有