您当前的位置: 首页 >  apache

星球守护者

暂无认证

  • 5浏览

    0关注

    641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

星球守护者 发布时间:2022-05-25 14:40:01 ,浏览量:5

文章目录
    • 学习笔记连接
    • 第一部分 查看系统情况
      • 0x01 查看端口
      • 0x02 账号安全
      • 0x03 查看ssh日志信息
        • 第一步 查看登陆成功的日志
        • 第二步 查看正常退出的日志
        • 第三步 连接到服务器,提示输入密码时取消
        • 第四步 正常的手密码输入错误日志
        • 第五步 连续多次输入错误密码(暴力破解)
        • 第六步 查看登陆失败的日志
        • 第七步 统计登陆失败的用户名以及次数
        • 第八步 根据时间节点,梳理ssh日志
      • 0x04 ssh的加固意见
      • 0x05 其他的检查未发现异常
    • 第二部分 查看apache日志信息
        • 第一步 进入apache2的日志下
        • 第二步 统计请求成功的记录
        • 第三步 统计出来访问成功系统的URL路径的次数排序,
        • 第四步 统计访问服务器的IP地址,
        • 第五步 根据时间节点,梳理日志
    • 摘抄
    • 免责声明

学习笔记连接
https://download.csdn.net/download/qq_41901122/85458006

点击链接下载: 记一次应急响应之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和进程名字了
------------------------------------

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

0x02 账号安全
who 
w
uptime
发现可疑的ip远程登陆主机,下一步的思路是排查ssh的登陆情况

在这里插入图片描述

0x03 查看ssh日志信息

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

第一步 查看登陆成功的日志
正常情况下,auth.log中存放的二进制文件,grep的时候加上参数
 -a, --text 作用: equivalent to --binary-files=text
cat /var/log/auth.log | grep  -a "Accepted"

在这里插入图片描述

第二步 查看正常退出的日志
 cat auth.log | grep -a "pam_unix(sshd:session): session closed"

在这里插入图片描述

正常的输入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]

在这里插入图片描述

第四步 正常的手密码输入错误日志
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

在这里插入图片描述

第五步 连续多次输入错误密码(暴力破解)
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

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

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

第六步 查看登陆失败的日志
cat auth.log | grep -a  "Failed password for"
日志较多,需要梳理时间线

在这里插入图片描述

第七步 统计登陆失败的用户名以及次数
grep -a  "Failed password for" auth.log |perl -e 'while($_=){ /for(.*?)from/; print "$1\n";}'|sort|uniq -c|sort -nr

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

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

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

在这里插入图片描述

查看某个用户的登陆尝试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

在这里插入图片描述

查询全部的不存在用户的登陆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

在这里插入图片描述

排除一个或多个用户,这里排除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

在这里插入图片描述

第八步 根据时间节点,梳理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

在这里插入图片描述

在这里插入图片描述

第二步 统计请求成功的记录
awk '($9==200){print $0}' access.log
awk '($9!=200 && $9!=302){print $0}' access.log
第三步 统计出来访问成功系统的URL路径的次数排序,

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

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

在这里插入图片描述

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

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

awk '{print $1}'  access.log | sort | uniq | wc -l 统计访问的不同IP个数
awk '($4>="[20/May/2022:13:10:20]" && $4            
关注
打赏
1662051426
查看更多评论
0.2492s