• 记一次应急响应之ssh日志和apache2日志分析


    学习笔记连接

    https://download.csdn.net/download/qq_41901122/85458006
    
    • 1

    点击链接下载:
    记一次应急响应之ssh日志和apache2日志分析

    第一部分 查看系统情况

    0x01 查看端口

    netstat -anptl

    netstat -anptl
    ------------------------------------
    Proto 协议类型
    RecV-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,如果接收队列RecV-Q一直处于阻塞状态,可能是遭受了拒绝服务denial-of-service攻击。
    Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区。如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
    Local Address:
    本机地址,一般有以下几种模式
    --------------------------
    *:80  监听IPV4或IPv6的任意IP的80端口
    :::80  监听IPV6和IPV4的任意IP的80端口
    0.0.0.0:80 监听任意IPV4地址的80端口
    127.0.0.1:80  监听本地的80端口,只能本地访问
    ::1:80  监听本次IPV6的回环地址,只能本地访问
    192.168.0.113:22 监听IP地址192.168.0.113的22端口
    --------------------------
    Foreign Address:外部地址,规则和Local Address规则一样
    State网络状态
    --------------------------
    LISTEN侦听状态,等待对端连接
    SYN SENT客户端发送建立连接的SYN请求后状态为SYN SENT
    SYN RECV服务端发送SYN+ACK后网络状态为SYN RECV
    ESTABLISHED已经建立起连接
    --------------------------
    PID/Program name进程ID和进程名字了
    ------------------------------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    ssh遭到连接,存在大量的ESTABLISHED转态的连接
    在这里插入图片描述

    0x02 账号安全

    who 
    w
    uptime
    发现可疑的ip远程登陆主机,下一步的思路是排查ssh的登陆情况
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    0x03 查看ssh日志信息

    进入日志文件下
    在这里插入图片描述

    第一步 查看登陆成功的日志

    正常情况下,auth.log中存放的二进制文件,grep的时候加上参数
     -a, --text 作用: equivalent to --binary-files=text
    cat /var/log/auth.log | grep  -a "Accepted"
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    第二步 查看正常退出的日志

     cat auth.log | grep -a "pam_unix(sshd:session): session closed"
    
    • 1

    在这里插入图片描述

    正常的输入ssh连接成功
    在这里插入图片描述

    切换用户(从Alice切到root用户)
    在这里插入图片描述

    正常退出ssh连接
    在这里插入图片描述

    第三步 连接到服务器,提示输入密码时取消

    May 23 03:59:48 gfriEND sshd[3910]: Address 192.168.0.108 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
    May 23 03:59:53 gfriEND sshd[3910]: Connection closed by 192.168.0.108 [preauth]
    
    • 1
    • 2

    在这里插入图片描述

    第四步 正常的手密码输入错误日志

    May 23 04:12:16 gfriEND sshd[4157]: Accepted password for alice from 192.168.0.108 port 41038 ssh2
    May 23 04:12:21 gfriEND sshd[4157]: pam_unix(sshd:session): session opened for user alice by (uid=0)
    May 23 04:12:31 gfriEND sshd[4157]: pam_unix(sshd:session): session closed for user alice
    May 23 04:15:04 gfriEND sshd[4172]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=bogon  user=alice
    May 23 04:15:11 gfriEND sshd[4172]: Failed password for alice from 192.168.0.108 port 41042 ssh2
    May 23 04:15:49 gfriEND sshd[4172]: message repeated 2 times: [ Failed password for alice from 192.168.0.108 port 41042 ssh2]
    May 23 04:15:49 gfriEND sshd[4172]: Connection closed by 192.168.0.108 [preauth]
    May 23 04:15:49 gfriEND sshd[4172]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=bogon  user=alice
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    第五步 连续多次输入错误密码(暴力破解)

    May 23 04:06:33 gfriEND sshd[4129]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.108 
    May 23 04:06:34 gfriEND sshd[4101]: Failed password for alice from 192.168.0.108 port 40972 ssh2
    May 23 04:06:34 gfriEND sshd[4101]: Received disconnect from 192.168.0.108: 11: Bye Bye [preauth]
    May 23 04:06:34 gfriEND sshd[4133]: Address 192.168.0.108 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
    May 23 04:06:34 gfriEND sshd[4133]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.108  user=aingmaung
    
    • 1
    • 2
    • 3
    • 4
    • 5

    对用户名固定,密码进行尝试的:
    在这里插入图片描述

    对用户名和密码都进行尝试的:
    在这里插入图片描述

    第六步 查看登陆失败的日志

    cat auth.log | grep -a  "Failed password for"
    日志较多,需要梳理时间线
    
    • 1
    • 2

    在这里插入图片描述

    第七步 统计登陆失败的用户名以及次数

    grep -a  "Failed password for" auth.log |perl -e 'while($_=<>){ /for(.*?)from/; print "$1\n";}'|sort|uniq -c|sort -nr
    
    • 1

    最后一行会显示无效的用户,主要是暴力破解,进行用户枚举的记录
    在这里插入图片描述

    查看不存在的用户名以及错误登陆的次数

     cat auth.log | grep -a  "Failed password for"|grep  "invalid" |  cut -d " " -f 11 | sort | uniq -c |sort -nr
    
    • 1

    在这里插入图片描述

    查看某个用户的登陆尝试ip以及次数

     cat auth.log | grep -a  "Failed password for"|grep  "alice" | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}' | sort |uniq -c | sort -nr
    
    • 1

    在这里插入图片描述

    查询全部的不存在用户的登陆IP以及次数

    cat auth.log | grep -a  "Failed password for"|grep  "invalid" | cut -d " " -f 11 | sort -nr | uniq | while read line;do echo [$line]; cat auth.log | grep -a  "Failed password for" | grep $line | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3} '|sort|uniq -c |sort -nr;done
    
    • 1

    在这里插入图片描述

    排除一个或多个用户,这里排除test和alict

     cat auth.log | grep -a  "Failed password for"|grep  "invalid" | grep -v "test\|alict" | cut -d " " -f 11 | sort -nr | uniq | while read line;do echo [$line]; cat auth.log | grep -a  "Failed password for" | grep $line | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3} '|sort|uniq -c |sort -nr;done
    
    • 1

    在这里插入图片描述

    第八步 根据时间节点,梳理ssh日志

    通过上面的分析,确认大致的时间段
    时间节点: 22:28-22:35 开始进行root尝试
    在这里插入图片描述

    时间节点: 22:35-23:22开始进行用户名和密码进行尝试
    在这里插入图片描述

    时间节点: 23:47 获得用户名进行尝*
    在这里插入图片描述

    时间节点 00:55-01:26成功登陆用户,切换成root用户,并且更改root的密码
    在这里插入图片描述

    0x04 ssh的加固意见

    • 升级SSH版本至少为7.7版本以上,7.7及以下版本存在SSH用户名枚举
    • 加强口令复杂程度
    • 禁止root用户登录,可以通过其他用户su到root

    0x05 其他的检查未发现异常

    第二部分 查看apache日志信息

    第一步 进入apache2的日志下

    cd /var/log/apache2/
    access.log :记录了所有对Web服务器的访问活动,查找攻击事件时重点看这个
    error.log     :错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。
    cat access.log
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在这里插入图片描述

    第二步 统计请求成功的记录

    awk '($9==200){print $0}' access.log
    awk '($9!=200 && $9!=302){print $0}' access.log
    
    • 1
    • 2

    第三步 统计出来访问成功系统的URL路径的次数排序,

    交给开发排查,验证是否存在漏洞点,是否存在漏洞

    awk -F\" '{print $2}' access.log | sort | uniq -c  | sort -nr | head -15
    
    • 1

    在这里插入图片描述

    第四步 统计访问服务器的IP地址,

    依次排查,这些IP中哪些可疑

    awk '{print $1}'  access.log | sort | uniq | wc -l 统计访问的不同IP个数
    awk '($4>="[20/May/2022:13:10:20]" && $4<="[24/May/2022:23:43:18]"){print $0}' access.log | grep web | awk '{print $1}'  | sort | uniq -c | sort -nr | head -20
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第五步 根据时间节点,梳理日志

    时间节点:5月27日的20:46:-20:27:23一直在目录遍历
    在这里插入图片描述

    时间节点:20:47-20:33,返回200,并且成功访问系统
    在这里插入图片描述

    时间节点:21:19-22:13 发现进入系统,并且对user_id进行遍历,并且有返回的数据包字节数,怀疑进行系统,并且存在越权遍历用户
    在这里插入图片描述

    时间节点:22:23- 22:35,请求页面是loginlogout,并且每次间隔的ID不同,怀疑是上一步获取的账号密码,进行登陆尝试
    在这里插入图片描述

    之后就没有日志信息了

    摘抄


    用体力赚钱,就老实点;
    用脑力赚钱,就机灵点;
    用钱赚钱,就狠心一点
    用资源赚钱,就圆滑一点.


    免责声明

    本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!由于使用不当造成的后果上传者概不负责

  • 相关阅读:
    Python 深度学习入门之CNN
    【阿里云】任务2-OSS对象存储教程(找我参加活动可获得京东卡奖励)
    MySQL8.0.26安装配置教程(windows 64位)
    深度学习(PyTorch)——多分类问题(Softmax Classifier)
    Windows上搭建一个网站(基本生产环境)
    zynq pl访问ps ddr
    二分法,平衡二叉树、B树、B+树
    基于lex和yacc的词法分析器+语法分析器
    ubuntu联网图标消失
    shiro认证(ssm)
  • 原文地址:https://blog.csdn.net/qq_41901122/article/details/124957896