• 应急响应常用命令(Linux)---读书笔记


    一、系统排查

    1. 系统信息查询

    lscpu             --- 查看cpu信息

    uname -a      --- 查看OS信息

    lsmod          --- 查看模块信息

    2.用户信息查询

    cat /etc/passwd   显示 bin/bash 表示账号状态可登录

                               显示sbin/nologin 表面账户不可登录

                                配合grep 可以查看可以登录的用户

    cat /etc/passwd |grep -E "/bin/bash$"

    ----------------------------------------------------------------------------------         

    awk -F: '{if($3==0)print $1}' /etc/passwd

                               查询可登录账户UID为0的账户,也就是root用户。

    注: awk是用于处理文本文件相关数据,F指定分隔符, $N代表第N列。

                              以:为分隔符,如果第3列为0 ,则打印第1列的信息

                              $0 代表整个文本行;

                              $N 代表文本行中的第 N 个数据字段;

    -----------------------------------------------------------------------------------  

    lastb                   查看用户错误的登录信息

    lastlog                查看所有用户最后的登录信息

    last                     查看用户最近登录信息

    who                    查看当前用户登录系统信息

    awk -F: 'length($2)==0 {print $1}' /etc/shadow

                              查看空口令账户:第2列长度为0,则密码为空

    -----------------------------------------------

    3.启动项排查

    cat /etc/init.d/rc.local 查看init.d文件夹下的rc.local文件内容

    cat /etc/rc.local

    ls -alt /etc/init.d

    4.检查任务计划

    crontab -l            查看当前的任务计划

    crontab -u root -l 查看root 用户的任务计划

    ls /etc/cron*       使用正则的*筛选出cron开头的文件

    二.进程排查

     1. 分析可疑端口及进程

    netstat -antlp |more    查看监听的服务 

    ls -alt /proc/PID   查看指定PID的可执行文件

    lsof -p PID           查看进程打开的文件 

    ps aux                 检查进程
    -------------------------------------------------------

    如果是恶意代码,需要处置

    kill -9 PID          结束恶意进程

    rm -rf filename  删除恶意文件

    注解:如果root无法删除文件,则可能该文件被加了i属性,使用

                  lsattr filename   查看文件属性

                  chattr -i filename 移除文件的i属性

    2. 对于隐藏进程的排查

       ps -ef| awk '{print}' |sort -n|uniq >1

       ls /proc |sort -n|uniq >2

       diff 1 2 

      三、服务排查

        chkconfig --list 查看系统中运行的服务

        1 --- 表示单用户模式

        2--- 表示无网络连接的多用户命令行模式

        3--- 表示有网络连接的多用户命令行模式

        4--- 表示不可用

        5 --- 表示带图形界面的多用户模式

        6 --- 表示重新启动

    service --status-all 查看所有服务的状态。

    四、文件痕迹排查

    1. 敏感目录

    /tmp目录和命令目录 /usr/bin/    /user/sbin

    ~/.ssh 和  /etc/ssh经常作为一些后门配置的路径

    2. 时间点查询

    通过列出攻击日期内变动的文件,发现相关的恶意文件。

    find命令

    find / -ctime 0 -name "*sh"

                  查找一天内新增的sh文件

    在查看指定目录时,也可以对文件时间进行排序,比如:

    ls命令

    ls -alt | head -n 10   --- 查看排序后前10行的内容  【对于时间点的查找】

    stat命令

    stat commandi.php  --- 查询文件的时间信息

    3. 特殊文件

    恶意文件存在特定的设置、特定的关键字信息。

    查找隐藏的恶意文件

    ls -ar |grep "^\."      .代表当前目录,  ..代表上一级目录

    特殊权限文件排查:查找777权限的文件。

    find  /tmp -perm 777  

    find  . *.txt -perm 777

    Webshell查找:通过分析文件、流量、日志,基于文件的命名特征和内容特征。

    find /var/www/ -name "*.php"| xargs egrep

    系统文件排查:

    ls -alt /bin  查看命令目录下相关系统命令的修改时间

    rpm -Va 查看发生过变化的软件包

    ls -alh /bin 查看相关文件的大小,如果明显偏大,则文件可能被替换

    Linux后门检测:(chkrootkit和rkhunter均需要下载安装)

    chkrootkit 用来检测rootkit是否被安装到当前系统中

    chkrootkit -q |grep INFECTED   --- 检测并筛选出存在infected内容

    rkhunter进行命令Binary检测,包括MD5校验、rootkit检测、本机敏感目录检测、系统配置检测、服务及套件异常检测、第三方应用版本检测等。

    rkhunter --check

    排查SUID程序:

    对于一些设置了SUID权限的程序进行排查,可以使用find命令

    find / -type f -perm -04000 -ls -uid 0 2>/dev/null

    五、日志分析

    日志一般放在目录 /var/log/ 下面,具备包括:

    /var/log/wtmp  --- 记录登录进入、退出、数据交换、关机及重启。

    /var/log/cron   --- 记录有定时任务相关的日志

    /var/log/messsages --- 记录系统启动后的信息和错误日志

    /var/log/apache2/access.log  --- 记录Apache的访问日志

    /var/log/auth.log   --- 记录系统授权信息,包括用户登录和使用的权限机制等。

    /var/log/userlog --- 记录所有等级用户信息的日志

    /var/log/xferlog(vsftpd.log) --- 记录Linux FTP日志

    /var/log/lastlog --- 记录登录的用户,可使用命令 lastlog

    /var/log/secure --- 记录大多数应用输入的账号和密码,以及登录是否成功信息

    /var/log/faillog  --- 记录登录系统不成功的账号信息

    使用cat可以查看相关日志

    ls -alt  /var/spool/mail 查看邮件相关日志记录文件

    cat /var/spool/mail/root 可以发现相关的攻击行为

    日志分析命令

    grep   sed    sort     awk

    常用的日志命令及功能如下:

    tail -n 10 test.log  --- 查询最后10行的日志

    tail -n +10 test.log --- 查询10行之后的所有日志

    head -n 10 test.log --- 查询头10行的日志

    head -n -10 test.log --- 查询除了最后10行的其他所有日志

    在*.log日志文件中统计独立IP地址的个数的命令

    awk '{print $1}' test.log |sort |uniq |wc -l

    awk '{print $1}' /access.log |sort |uniq -c |sort -nr|head -10

    查找指定时间段的日志

    sed -n'/2014-12-17 16:22:31/,/2014-12-18 23:10:12/p' test.log

    grep '2014-12-17 16:22:32' test.log

    定位有多少IP地址暴力破解主机root账号的命令

    cat /var/log/secure |awk '/Accepted/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

    (CentOS)

    查看登录成功的IP地址的命令

    cat /var/log/auto.log |awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"='$1;}'

    (ubuntu)

    查看登录成功日期、用户名、IP地址的命令
    grep “Accetped”  /var/log/secure |awk '{print $1,$2,$3,$9,$11}'

    其他系统的日志:

    Apache 日志:

                    /var/log/httpd/access.log

                    /var/log/apache/access.log

                   /var/log/apache2/access.log

                    /var/log/httpd-access.log

    Ngnix日志:

                   /usr/local/nginx/logs 

                   access.log  ---访问日志   error.log ---错误日志   

    Tomcat日志

                    默认在TOMCAT_HOME/logs/目录下

    数据库日志

        Oracle : 查询日志路径  select * from v$logfile

                        查询之前使用过的的sql select * from v$sql

        Mysql:   show variables like 'log_%'  --- 查看是否启用日志

                      默认路径在 /var/log/mysql 

                    show variables like 'general'

    六、内存分析

    Volatility 开源内存取证工具


    七、流量分析

    一般工具: PCHunter、 Process Monitor

    数据包过滤分析: Wireshark

    八、威胁情报

    威胁情报金字塔:David J. Bianco

    包括文件Hash值、IP地址、域名、网络或者主机特征、攻击工具和TTPs(Tactics、Techniques and Procedures)

     相对来说,工具、技术层面的威胁情报成本相对较高。

    IOC(Indicator of Compromise)通常指在检测或者取证中,具有高置信度的威胁对象或特征信息。在应急响应中,威胁情报

    平台查询到的信息一般都属于 IOC.

    勒索病毒

    无C2服务器加密技术:

    在加密前先随机生成新的加密密钥对(非对称公,私钥)

    使用新生成的公钥对文件进行加密

    采用攻击者预埋的公钥把新生成的私钥进行加密,保存于一个ID文件中或嵌入加密文件

    无C2服务器解密技术: ·

    通过邮件和在线提交的方法,提交ID串或加密文件中的加密私钥(一般攻击者会提取该私钥)

    ·攻击者使用保留的与预埋公钥对应的私钥 解密受害者提交过来的私钥

    ·把解密私钥或解密工具交付给受害者进行解密

    挖矿木马

    netstat -anpt 查看进程

    ls -alh /proc/PID  

    kill -9 PID

    rm -rf filename

     

  • 相关阅读:
    技术分享 | Jenkins 节点该如何管理?
    全新分子图对比学习框架:飞桨社区开发者为你解读顶会论文
    解释Android中的Activity生命周期,以及在哪个生命周期方法中可以进行布局的初始化?
    ubuntu 安装 gparted
    c++设计模式:单例模式
    电脑电源灯一闪一闪开不了机怎么办
    亿万级别Kafka演进之路:可靠性+事务+消息中间件+源码+日志
    开源的.Net 工作流引擎Elsa初试——创建工作流服务器和图形化工作流配置管理应用
    内存对齐--面试常问问题和笔试常考问题
    【Netty】1-2. TCP通信与Netty基本介绍
  • 原文地址:https://blog.csdn.net/xian_wwq/article/details/126216475