安全基础--25--Linux应急响应中常用的命令

it2024-07-11  49

1、账号安全

1、查询特权用户特权用户(uid 为0)

[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd

2、查询可以远程登录的帐号信息

[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow

3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限

[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

4、禁用或删除多余及可疑的帐号

# 禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头 usermod -L user # 删除user用户 userdel user # 将删除user用户,并且将/home目录下的user目录一并删除 userdel -r user

2、历史命令

进入用户目录下

cat .bash_history >> history.txt

3、检查异常端口

使用netstat网络连接命令,分析可疑端口、IP、PID

netstat -antlp|more

查看下pid所对应的进程文件路径,运行

ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID为对应的pid号)

4、检查异常进程

使用ps命令,分析进程

ps aux | grep pid

5、检查开机启动项

检查启动项文件

more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

6、检查定时任务

重点关注以下目录中是否存在恶意脚本

/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/*

7、检查自启动服务

RPM包安装的服务

# 查看服务自启动状态,可以看到所有的RPM包安装的服务 chkconfig --list # 查看当前服务 ps aux | grep crond

源码包安装的服务

查看服务安装位置 ,一般是在/user/local/ service httpd start 搜索/etc/rc.d/init.d/查看是否存在

8、检查系统日志

日志文件说明/var/log/cron记录了系统定时任务相关的日志/var/log/cups记录打印信息的日志/var/log/dmesg记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息/var/log/mailog记录邮件信息/var/log/message记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件/var/log/btmp记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看/var/log/lastlog记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看/var/log/utmp记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询/var/log/secure记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

Linux下常用的shell命令如:find、grep、egrep、awk、sed

1、grep显示前后几行信息:

标准unix/linux下的grep通过下面參数控制上下文:

# 显示file文件里匹配foo字串那行以及上下5行 grep -C 5 foo file # 显示foo及前5行 grep -B 5 foo file # 显示foo及后5行 grep -A 5 foo file # 查看grep版本号的方法是 grep -V

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

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

3、如何显示一个文件的某几行:

# 从第1000行开始,显示2000行。即显示1000~2999行 cat input_file | tail -n +1000 | head -n 2000

4、在目录/etc中查找文件init

find /etc -name init

5、只是显示/etc/passwd的账户

# awk -F指定域分隔符为':',将记录按指定的域分隔符划分域 # 填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域 cat /etc/passwd |awk -F ':' '{print $1}'

6、删除历史操作记录,只保留前153行

sed -i '153,$d' .bash_history

定位有多少IP在爆破主机的root帐号:

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

登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

9、SUID shell

SUID shell是一种可用于以拥有者权限运行的shell

# 在Linux中查找SUID设置的文件 find . -perm /4000 # 在Linux中查找使用SGID设置的文件 find . -perm /2000 # 取消s权限 chmod u-s /tmp/shell

10、ssh公私钥免密登录

查看 /root/.ssh/authorized_keys 是否被修改

11、软连接

进程、端口都可以发现异常

# 结束进程即可清除后门 kill -s 9 PID

12、SSH wrapper

# 可通过重装ssh服务恢复 ls -al /usr/sbin/sshd cat /usr/sbin/sshd

13、openssh后门

# 获取可疑进程PI ps aux | grep sshd # 跟踪sshd PID strace -o aa -ff -p PID # 查看记录密码打开文件 grep open sshd* | grep -v -e No -e null -e denied| grep WR

14、PAM后门

利用方法:

1、获取目标系统所使用的PAM版本,下载对应版本的pam版本 2、解压缩,修改pam_unix_auth.c文件,添加万能密码 3、编译安装PAM 4、编译完后的文件在:modules/pam_unix/.libs/pam_unix.so,复制到/lib64/security中进行替换,即可使用万能密码登陆,并将用户名密码记录到文件中。

排查:

# 通过Strace跟踪ssh ps axu | grep sshd strace -o aa -ff -p PID grep open aa* | grep -v -e No -e null -e denied| grep WR # 检查pam_unix.so的修改时间 stat /lib/security/pam_unix.so #32位 stat /lib64/security/pam_unix.so #64位 随 亦 认证博客专家 安全博客专家 甲方安全部负责人,坐标杭州,欢迎猎挖。擅长安全架构、web渗透、移动安全、代码审计、隐私合规、安全开发、安全运营
最新回复(0)