应急响应-Linux日志分析及常用命令总结

admin 2024年7月2日11:11:12评论6 views字数 5945阅读19分49秒阅读模式
应急响应-Linux日志分析及常用命令总结
应急响应-Linux日志分析及常用命令总结
有招聘需求的可以后台联系运营人员。
玄机靶场地址:https://xj.edisec.net/

第一章 应急响应-Linux日志分析

1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用
户名是多少

Linux 系统下,日志默认存放位置目录为:/var/log/

系统日志配置文件:/etc/rsyslog.conf

相关文件关系如下表:

日志文件

文件说明

/var/log/cron

记录了系统定时任务相关的日志。

/var/log/cups

记录打印信息的日志。

/var/log/dmesg

记录了系统在开机时内核自检的信息,也可以使用 dmesg 命令直接查看内核自检信息。

/var/log/maillog

记录邮件信息。

/var/log/message

记录系统重要信息的日志。这个日志文件中会记录 Linux 系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件。

/var/log/btmp

记录错误登录日志,这个文件是二进制文件,不能直接 vim 查看,而要使用 lastb 命令查看。

/var/log/lastlog

记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接 vim ,而要使用 lastlog 命令查看。

/var/log/wtmp

永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接 vim ,而需要使用 last 命令来查看。

/var/run/utmp

记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接 vim ,而要使用 w   who  users等命令来查询。

/var/log/secure

记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如 SSH 登录,su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。

比较重要的几个日志:

登录失败记录:/var/log/btmp,对应命令:lastb

最后一次登录:/var/log/lastlog,对应命令:lastlog

登录成功记录:/var/log/wtmp,对应命令:last

登录日志记录:/var/log/secure

目前登录用户信息:/var/run/utmp,对应命令:wwhousers

历史命令记录:history,其中仅清理当前用户:history -c

1.有多少IP在爆破主机sshroot帐号,如果有多个使用","分割

第一题是看有多少IP在爆破,这里我们需要查一下登录日志,可以查/var/log/secure或者auth.log,先进/var/log目录,看一下有auth.logauth.log.1,查看一下发现auth.log里没有日志,应该是在auth.log.1里。另外,爆破的话在日志里会显示 "Failed password for root" 。所以我们可以搜索 "Failed password for root" ,然后提取出用户名。这里需要用到grep、awk、sort、uniq等命令,这些命令具体用法后面有总结。

应急响应-Linux日志分析及常用命令总结

应急响应-Linux日志分析及常用命令总结

应急响应-Linux日志分析及常用命令总结

应急响应-Linux日志分析及常用命令总结

第一种方法

cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more

第二种方法

grep -a "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

第三种方法

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

grep参数:

-a 不要忽略二进制数据。

-i:在搜索的时候忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-v:输出不带关键字的行(反向查询,反向匹配)

-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,Aafter

-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,Bbefore

-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,Ccontext

-e:实现多个选项的匹配,逻辑or关系

-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?”查看是否匹配到,0表示匹配到,1表示没有匹配到。

-P:表示使用兼容perl的正则引擎。

-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep

awk简介

awk是一种编程语言,用于linux下对文本和数据进行处理。数据可以来来自标准输入、一个或多个文件,或其他命令的输出。

更多作为脚本来使用。

awk处理数据的方式:逐行扫描文件,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定动作,则把匹配的行显示到标准输出(屏幕)。如果没有指定模式,则所有被操作所指定的行都被处理。

2、选项

选项含义备注

-f从脚本文件中读取awk命令。常用

-F指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F: –field-separator常用

-v赋值一个用户定义变量。

开始使用 awk,以了解其工作原理。在命令行中输入以下命令:
$ awk '{ print }' /etc/passwd
您将会见到 /etc/passwd 文件的内容出现在眼前。现在,解释 awk 做了些什么。调用 awk 时,我们指定 /etc/passwd 作为输入文件。执行 awk 时,它依次对 /etc/passwd 中的每一行执行 print 命令。所有输出都发送到 stdout,所得到的结果与与执行catting /etc/passwd完全相同。
现在,解释 { print } 代码块。在 awk 中,花括号用于将几块代码组合到一起,这一点类似于 C 语言。在代码块中只有一条 print 命令。在 awk 中,如果只出现 print 命令,那么将打印当前行的全部内容。
这里是另一个 awk 示例,它的作用与上例完全相同:
$ awk '{ print $0 }' /etc/passwd
awk 中, $0 变量表示整个当前行,所以 print print $0 的作用完全一样。
如果您愿意,可以创建一个 awk 程序,让它输出与输入数据完全无关的数据。以下是一个示例:
$ awk '{ print "" }' /etc/passwd
只要将 "" 字符串传递给 print 命令,它就会打印空白行。如果
测试该脚本,将会发现对于 /etc/passwd 文件中的每一行,awk 都输出一个空白行。再次说明, awk 对输入文件中的每一行都执行这个脚本。以下是另一个示例:

$ awk '{ print "hiya" }' /etc/passwd

运行这个脚本将在您的屏幕上写满 hiya

. 多个字段

awk 非常善于处理分成多个逻辑字段的文本,而且让您可以毫不费力地引用 awk 脚本中每个独立的字段。以下脚本将打印出您的系统上所有用户帐户的列表:
$ awk -F":" '{ print $1 }' /etc/passwd 
上例中,在调用 awk 时,使用 -F 选项来指定 ":" 作为字段分隔符。awk 处理 print $1 命令时,它会打印出在输入文件中每一行中出现的第一个字段。以下是另一个示例:  
$ awk -F":" '{ print $1 $3 }' /etc/passwd
以下是该脚本输出的摘录:
halt7
operator11
root0
shutdown6
sync5
bin1
....etc.

如您所见,awk 打印出 /etc/passwd 文件的第一和第三个字段,它们正好分别是用户名和用户标识字段。现在,当脚本运行时,它并不理想 -- 在两个输出字段之间没有空格!如果习惯于使用 bash python 进行编程,那么您会指望 print $1 $3 命令在两个字段之间插入空格。然而,当两个字符串在 awk 程序中彼此相邻时,awk 会连接它们但不在它们之间添加空格。以下命令会在这两个字段中插入空格:
$ awk -F":" '{ print $1 " " $3 }' /etc/passwd
以这种方式调用 print 时,它将连接 $1 " " $3 ,创建可读的输出。当然,如果需要的话,我们还可以插入一些文本标签:
$ awk -F":" '{ print "username: " $1 "/t/tuid:" $3" }' /etc/passwd
这将产生以下输出:
username: halt uid:7
username: operator uid:11
username: root uid:0
username: shutdown uid:6
username: sync uid:5
username: bin uid:1

Linux sort 命令用于将文本文件内容加以排序。

sort 

可针对文本文件的内容,以行为单位来排序。

语法

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]

参数说明

·-b 忽略每行前面开始出的空格字符。

·-c 检查文件是否已经按照顺序排序。

·-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

·-f 排序时,将小写字母视为大写字母。

·-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

·-m 将几个排序好的文件进行合并。

·-M 将前面3个字母依照月份的缩写进行排序。

·-n 依照数值的大小排序。

·-u 意味着是唯一的(unique),输出的结果是去完重了的。

·-o<输出文件> 将排序后的结果存入指定的文件。

·-r 以相反的顺序来排序。

·-t<分隔字符> 指定排序时所用的栏位分隔字符。

·+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

·--help 显示帮助。

·--version 显示版本信息。

·[-k field1[,field2]] 按指定的列进行排序。

实例

在使用 sort 命令以默认的式对文件的行进行排序,使用的命令如下:

sort testfile

sort 命令将以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出。

使用 cat 命令显示 testfile 文件可知其原有的排序如下:

$ cat testfile # testfile文件原有排序  

test 30Hello95Linux85

使用 sort 命令重排后的结果如下:

$ sort testfile # 重排结果  Hello95Linux85

test 30

使用-k 参数设置对第二列的值进行重排,结果如下:

$ sort testfile -k 2

test 30Linux85Hello95

uniq命令

使用说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

该命令各选项含义如下:

-c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

-d 只显示重复行。

-u 只显示文件中不重复的各行。

-n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

-fn 与- n相同,这里n是字段数。

-sn 与+n相同,这里n是字符数。

2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割

应急响应-Linux日志分析及常用命令总结

这题跟上题一样做法,爆破成功会留下accepted关键字,所以搜索这个就行了。

cat/var/log/auth.log.1 /var/log/auth.log | grep -a "Accepted " | awk '{print $11}' | sort | uniq -c | sort -nr | more

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

3.爆破用户名字典是什么?如果有多个使用","分割

爆破得用户名字典,还是查关键字Failed password,这里注意后面不加root,因为黑客会爆破其他用户。

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

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

flag{user,hello,root,test3,test2,test1}

flag{root,user,hello,test3,test2,test1}

应急响应-Linux日志分析及常用命令总结

4.登陆成功的IP共爆破了多少次

登录成功的IP地址,在前面的语句里加一下,筛选出来192.168.200.2的IP地址就可以。

cat/var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password" | awk '{if($11=="192.168.200.2") print $11}'|sort|uniq -c

应急响应-Linux日志分析及常用命令总结

5.黑客登陆主机后新建了一个后门用户,用户名是多少

 这里可以查看/etc/passwd里面的用户,或者在auth.log里直接搜索是否添加用户,关键字useradd

应急响应-Linux日志分析及常用命令总结

应急响应-Linux日志分析及常用命令总结

原文始发于微信公众号(网络安全实验室):应急响应-Linux日志分析及常用命令总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日11:11:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   应急响应-Linux日志分析及常用命令总结http://cn-sec.com/archives/2908933.html

发表评论

匿名网友 填写信息