Unix 的入侵追踪

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在*NIX系统遭受入侵后,确定损失及入侵者的攻击源地址相当重要。虽然在大多数入侵者懂得使用曾被他们攻陷的机器作为跳板来攻击你的服务器可在他们发动正式攻击前所做的目标信息收集工作(试探性扫描)常常是从他们的工作机开始的,本篇介绍如何从遭受入侵的系统的日志中分析出入侵者的IP并加以确定的。

在*NIX系统遭受入侵后,确定损失及入侵者的攻击源地址相当重要。虽然在大多数入侵者懂得使用曾被他们攻陷的机器作为跳板来攻击你的服务器可在他们发动正式攻击前所做的目标信息收集工作(试探性扫描)常常是从他们的工作机开始的,本篇介绍如何从遭受入侵的系统的日志中分析出入侵者的IP并加以确定的。
1.messages

  /var/adm是UNIX的日志目录(linux下则是/var/log)。有相当多的ASCII文本格式的日志保存之下,当然 ,让我们把焦点首先集中在messages 这个文件,这也是入侵者所关心的文件,它记录了来自系统级别的信息。在这里,大量的日志记录对于我们是无用的。
  比如:
  Apr 25 21:49:30 2000 unix: Copyright (c) 1983-1997, Sun Microsystems, Inc.
  Apr 25 21:49:30 2000 unix: mem = 262144K (0x10000000)

  这样显示版权或者硬件信息的记录而:
  Apr 29 19:06:47 www login[28845]: FAILED LOGIN 1 FROM xxx.xxx.xxx.xxx ,
  User not known to the underlying authentication module

  这样的登录失败记录:
  Apr 29 22:05:45 game PAM_pwdb[29509]: (login) session opened for user ncx by (uid=0)因此第一步应该是 Kill -HUP cat `/var/run/syslogd.pid`(当然,有可能入侵者已经帮我们做过了,;-)那样我们得不到任何有用信息)

  在下面这个网址你可以找到大量的日志审计分析工具或者脚:
http://www.securityfocus.com/templates/tools_category.html?category=2&platform=&path=[%20auditing%20][%2-0log%20analysis%20]


2.wtmp,utmp logs,ftp日志

  你能够在/var/adm,/var/log,/etc目录中找到名为wtmp,utmp的文件,这记录着用户何时,何地telnet上主机, 在黑客中最古老也是最流行的zap2(编译后的文件名一般叫做z2,或者是叫wipe). 也是用来抹掉在这两个文件中用户登录的信息的,然而由于懒惰或者糟糕的网络速度(>3秒的echo就令人崩溃,而我经常遇见10 倍于此的回显时间 ),很多入侵者没有上载或编译这个文件,管理员所需要就是使用lastlog这个命令来获得入侵者上次连接的源地址( 当然,这个地址有可能是他们的一个跳板)ftp日志一般是/var/log/xferlog,该文本形式的文件详细的记录了以FTP 方式上传文件的时间,来源,文件名等等。不过由于该日志太明显,所以稍微高明些的入侵者几乎不会使用该方法来传文件。而使用rcp的较普遍些.当然你可以# cat /var/log/xferlog | grep -v 202.106.147.来查看那些不应该出现的地址。


3.sh_history

  在获得root 权限后,入侵者建立了他们自己的入侵帐号,更高级的技巧是给类似uucp,lp不常使用的系统用户名加上密码。在遭受入侵后,即使入侵者删除了.sh_history或者.bash_hi-story 这样的文件,执行kill -HUP `cat /var/run/inetd.conf`即可将保留在内存页中的bash命令记录重新写回到磁盘,然后执行find / -name.sh_historyprint,仔细查看每个可疑的shell命令日志。尤其是当你在/usr/spool/lp(lp home dir),/usr/lib/uucp/(uucp home dir)这样的目录下找了.sh_history文件时。往往入侵者在需要目标机和工作机传送文件时为了避免被syslog,可能使用从目标机ftp到工作机的方法,因此在sh_history中你有可能发现类似ftp xxx.xxx.xxx.xxx或者rcpnobody@xxx.xxx.xxx.xxx:/tmp/backdoor /tmp/backdoor这样显示出入侵者IP或域名的命令。


5.http服务器日志

  这很有可能是确定入侵者的真实攻击发源地的最有效方法。以最流行的apache服务器为例,在?${prefix}/logs/ 目录下你可以发现access.log这个文件,该文件记载了访问者的IP,访问的时间和请求访问的内容。在遭受入侵后,我们应该可以在该文件中发现类似下面的:record:xxx.xxx.xxx.xxx - - [28/Apr/2000:00:29:05 -0800] "GET/cgi-bin/rguest.exe"404 -xxx.xxx.xxx.xxx - - [28/Apr/2000:00:28:57 -0800] "GET /msads/Samples/SELECTOR/showcode.asp" 404 -来自IP为xxx.xxx.xxx.xxx的某人在2000年4月28号的0点28分试图访问/msads/Samples/SELECTOR/showcode.asp文件,这是在使用web cgi扫描器后遗留下的日志。大部分的web扫描器都是基于MS操作系统的,而为了更快的速度,使用基于*nix的扫描器的入侵者常选择离自己最近的服务器。结合攻击时间和IP,我们可以知道入侵者的大量信息。


6.核心dump

  这是一种相对较复杂的方法,但是也有效 。一个安全稳定的守护进程在正常运行的时候是不会dump出系统的核心,当入侵者利用远程漏洞攻击时,许多服务正在执行一个getpeername的socket 函数调用(参见socket编程),因此入侵者的IP也保存在内存中,此时服务overflow ,系统p 内存页文件被dump到core文件,这意味着你可能在一大段杂乱无章的字符中(事实上是一个全局数据库中的进程变量)找到一个包含有执行此expoloit的IP。BTW: 这段是参考了http://members.tripod.com/mixtersecurity/paper.html后写出的,我做了一个cmsd的远程攻击测试,但只在中间找到了入侵者远程overflow的部分命令,没有找到IP。不过这仍有理由相信Mixter(paper.html的作者)的话。


7.代理服务器日志

  代理是大中型企业网常使用来做为内外信息交换的一个接口,它忠实地记录着每一个用户所访问的内容,当然,也包括入侵者的访问内容。以最常用的squid代理为例,通常你可以在/usr/local/squid/logs/下找到access.log 这个庞大的日志文件,当然,由于日志记录添加得很快,在安全事故后应该及时备份它。你可以在以下地址获得squid的日志分析脚本:http://www.squid-cache.org/Doc/Users-Guide/added/stats.html通过对敏感文件访问日志的分析,可以知道何人在何时访问了这些本该保密的内容。


8.路由器日志

  默认方式下路由器不会记录任何扫描和登录,因此入侵者常用它做跳板来进行攻击。如果你的企业网被划分为军事区和非军事区的话,添加路由器的日志记录将有助于日后追踪入侵者。更重要的是,对于管理员来说,这样的设置能确定攻击者到底是内贼还是外盗。当然,你需要额外的一台服务器来放置router.log文件。

  在CISCO路由器上:
  router(config)# logging faclity syslog
  router(config)# logging trap informational
  router(config)# logging [服务器名]
  在log server上:
  I.在/etc/syslog.conf中加入一行:
  *.info /var/log/router.log
  II.生成文件日志文件:
  touch /var/log/router.log
  III.重起syslogd进程:
  kill -HUP `cat /var/run/syslogd.pid`

  对于入侵者来说,在实施攻击的整个过程中不与目标机试图建立tcp连接是不太可能的,这里有许多入侵者主观和客观的原因, 而且在实施攻击中不留下日志也是相当困难的。如果我们花上足够的时间和精力,是可以从大量的日志中分析出我们希望的信息。 就入侵者的行为心理而言,他们在目标机上取得的权限越大,他们就越倾向于保守的方式来建立与目标机的连接 。仔细分析早期的日志,尤其是包含有扫描的部分,我们能有更大的收获。


  日志审计只是作为入侵后的被动防御手段。主动的是加强自身的学习,及时升级或更新系统。做到有备无患才是最有效的防止入侵的方法。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
Unix Shell Perl
《UNIX编程环境》——5.9 get和put:追踪文件变动
程序在开发过程中不断地改正错误和增加新功能。版本追踪往往是不可少的。特别是有的用户把程序移植到其他的机器上使用—他们常常跑回来问“在我们的版本之后又有哪些改动”,或者“这个那个错误是怎么改的”。
1667 0
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
266 0
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
162 2
|
7月前
|
安全 Unix Linux
Unix:Linux的“祖师爷”
Unix的诞生 Unix操作系统诞生于1969年,由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie)在AT&T的贝尔实验室开发。其初衷是为了在闲置的PDP-7计算机上开发一个简单的操作系统,以便进行编程和游戏。最初的Unix是用汇编语言编写的,但随后为了更高效的开发和更好的可移植性,里奇和汤普逊用C语言重写了Unix的大部分代码,这奠定了Unix的基础,并促进了C语言的广泛应用。
160 2
|
9月前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
119 2
|
Unix Shell Linux
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
146 4
|
11月前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
224 0
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
176 0
|
Oracle Ubuntu Unix
Unix与Linux区别
Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在1969年创建的。 Linux: Linux是由芬兰计算机科学家Linus Torvalds在1991年创建的。它是作为一个免费、开放源代码的Unix克隆而开始的。
201 1