Posts for: #Security

入侵检测工具Watcher

文章提交:quack (quack_at_xfocus.org)

入侵检测工具Watcher

===================

by quack  [email protected]

参考资料 Watcher by hyperion [email protected] in pharck

一、写在前面

你如何了解系统是否被攻克?在你发现系统中多了些奇怪的帐号或者某些特洛伊程序时,

一切已经太迟了。除非你的机器非常强大,否则你的机会只存在于当你在机器被扫描后、

而攻击发生前的短暂的时间段里。当然你可以用类似于tcp wrappers的程序来保证系统

连接的安全,但它并不能监测到stealth扫描或者DOS攻击,你也可以购买商业版本的入

侵监测系统――只要你不嫌贵的话,其实性价比最高的就是从互联网上获取类似的免费

的软件,安装或者改造它以适应你的需求,watcher就是这么一个家伙。

二、功能

watcher检测所有通过的信息包,并且将它认为是恶意的攻击行为记录在syslog中,当前

的watcher能够检测下列的攻击行为:

    - 所有的TCP扫描

    - 所有的UDP扫描

    - Synflood攻击

    - Teardrop攻击

    - Land攻击

    - Smurf攻击

    - Ping of death攻击

所有的参数以及配置都是在命令行给出的,你可以配置它仅仅监视扫描行为或者仅仅监

视DOS攻击。它的监测行为是这样的:如果在短时间内有超过7个以上的端口收到信息包

(不管类型如何),那么这一事件就被当成端口扫描记录下来。UDP扫描认定的原理也一

样。当watcher在同一端口收到超过8个的syn包没有带ack或者fin位的话,就会认定是

synflood攻击事件。如果UDP的碎片包――IP包的id号是242,它就认为是teardrop攻击,

因为发布的攻击代码使用的是242的id号――这点存在不足;(。对同一端口的大量TCP

SYN包,带源地址及目标地址的,将被认为是land攻击,如果有超过5个icmp echo replies

在很短时间内出现(时间可以自定义),将记录为smurf攻击……

Watcher有三种监测模式,在默认的模式下,它仅仅监测对本台主机的攻击行为,第二种

模式可以监测在C类子网内的所有主机,第三种模式则可以监测所有能接收到信息包的主

机。当你把watcher放在外部主机上时,监测多主机特别有效,当一台主机的log文件被

破坏时,其它主机上还有记录。

由于watcher把所有的信息包都当成“攻击”,然后再进行分析,这种判断是极为粗糙的,

可能会误判,所以在代码中作者加入了一些过滤的技巧。

比如一些web server上会有漂亮的gif图片或者flash等玩意儿,而客户端这时往往会开了

多个线程来下载它,这时watcher的规则就会认为这是一次tcp scan,所以作者只好加上了

只有超过40个tcp连接才记录下的的规则――这些都是可定制的。就不详述了,你可以自行

参看下面的代码。

它的输出是非常简单的,每隔10秒它就将可能的攻击行为记录在syslog当中,同时源IP以及

目标IP甚至相关的信息比如端口号,包的数量等等也将被记录下来,如果该攻击行为的IP是

假的,那么它同时将记下MAC地址――如果攻击来自外部,地址将是你本地接收到该包的route

的地址,如果攻击来自内部的话,呵,你可以用自己的方式来"感谢"攻击者;)

三、程序参数

Watcher是用于linux系统的,通常你只需要在命令行后台运行它就可以了,它的参数如下:

Usage: watcher [参数]

[阅读全文]

了解你的敌人

本文是 Honeynet Project 的"了解你的敌人"系列文章的中文翻译,原文发布于 project.honeynet.org,中文翻译来自 xfocus.net

我的长官经常对我说:在敌人面前好很好的保护自己,你必须先了解敌人先。(孙子兵法:知己知彼,百战百胜)。这句军事用语现在也很好的应用于网络安全领域中了,就象作战一样,你要保护自己的资源,你需要知道谁是你最大的威胁和他们会怎样攻击。在这个系列中的第一篇文章,就是讨论一种很流行很广泛的来自Scritp Kiddie所使用的工具和方法,如果你或者你的组织有任何资源连接到Internet上,你就有此类的威胁。

Know Your Enemy文章主要是涉及到blackhatck团体使用的工具,策略和动机。而Know Your Enemy:II主要集中于你怎样能探测这些威胁,判断他们所使用的工具和他们在你系统上寻找什么样的漏洞。Know Your Enemy:III集中讨论攻击者获得ROOT后在系统上怎样操作,特别是他们是如何掩盖他们的踪迹和他们下一步主要干什么。Know Your Enemy: Forensics 涉及了你怎样分析一种攻击。Know Your Enemy: Motives 通过捕获black-hat团体之间的通信和联系来分析他们的动机和心理状态。Know Your Enemy: Worms at War 描述了WORM蠕虫是怎样自动攻击WINDOW系统的。

**什么叫Script Kiddie **

Script kiddie是一些专门找寻一些容易下手资源的人,他们不专门针对某种特定信息或者目标特定公司,他们的目标是尽可能的用最简单的方法获得ROOT,他们通过搜集一些公开的exploit信息并搜索整个Internet来找寻有这种exploit漏洞的资源,这样,不管怎样,总有某些人会被他们操作。

其中一些高级点的家伙会开发他们自己的工具,并留下一些复杂的后门,另外一些根本就不知道他们做什么,就知道怎样在命令行打"go"的人。忽略他们的技术水平不说,Script kiddie就是共享一些公共策略,随机搜索某个特殊漏洞并利用这个特殊漏洞的人。

** 他们形成的威胁在哪里?**

由于Script kiddie是随机选择目标,所以存在的威胁是你的系统迟早会被扫描到,我知道管理员很惊讶他们的系统在设置以后没几天也没有告诉任何人的时候就被扫描到了,其实这一点也不值得惊讶,因为Scritp kiddie一般是扫描一段网络来操作的。

如果扫描只能限制在几个独立的资源,你可能会很安心,因为Internet上千千万万的机器,扫描到你的机器的几率少之又少。但是,事实不是你想象的这样,目前多数工具能很方面的使用大范围扫描并广泛传播,任何人可以使用他们,使用这些工具的人数增长率呈现惊人的速率。Internet是一个无国界的区域,这种威胁就很快转播到世界各个地方,有这么多人使用这些工具,你被探测就不是问题了。

试图以含糊其词来搪塞你的安全问题会害了你:你或许会认为没有人知道你的系统,你就会安全,或者你认为你的系统没有价值,他们为何要探测你,其实这些系统正是scritp kiddies搜寻的目标–没有任何保护的系统,非常容易得手的系统。

** 具体方法讨论**

Scritp kiddie的方法很简单,扫描Internet有特定缺陷的系统,一但查找到,便对它下手,他们用的许多工具会自动操作,不需要很多的交互。你只要打开工具,然后过几天回来看看你的结果就可以了。没有两个工具是相同的就象没有两个漏洞是一样的,但是虽然如此,许多工具的策略是一样的,第一,开发要扫描的IP段,然后扫描这些IP段中特定的漏洞。

例如:我们假定一个用户有一个工具可以利用Linux系统上的imap漏洞,如imapd_exploit.c,开始,他们开发一IP数据库来扫描,一旦IP数据库构建好,用户会想判断系统是否运行LINUX系统。目前许多扫描器可以通过发送不正常的信息包到目标系统并查看他们如果响应便可很方便的判断操作系统,如Fyodor的nmap,然后,工具会判断LINUX系统是否运行着imap服务,最后就是利用imapd_exploit.c程序来进入系统了。

你会想所以这些扫描会有很大的动静,很容易引起注意,但是,很多人没有很好的监视他们的系统,并不认识到他们正被扫描,而且,许多script kiddies在查看他们所要利用的系统时也会保持相当的安静,一旦他们利用这个漏洞进入系统,他们就会使用这个系统作为跳板,并不带任何包袱的扫描整个系统,因为如果这种扫描被抓获,责任是系统管理员而不是那些script-kiddie.

所有这些扫描的结果经常被用来归档或者在其他用户中共享,以便在以后的日子里使用,如用户在最初为了某个漏洞扫描出来的LINUX系统开了那些端口的数据库后,过一点时间,一个新的漏洞被发现以后,用户可以不用重新构建或者扫描新的IP段,他可以很方便的来查看以前归档的数据库并来利用这个新发现的漏洞。其他变相的,用户可以交流或者买卖有漏洞系统的数据库。你可以看Know Your Enemy: Motives文章中的例子,这样造成scritp kiddie可以不扫描系统而破坏你的资源。

有些Black-hats会采用木马或者后门来种植在破坏的系统中,后门允许方便的随时的让攻击者来访问你的系统,而木马使入侵者难于被发现,这些技术可以让他们的操作不显示在任何LOG记录,系统进程或者文件结构上,他可以构建一个舒适安全的环境来扫描Internet,跟详细的信息请看:Know Your Enemy: III

这些攻击没有限制在一天中的任何时间,许多管理员搜索他们的LOG记录来查询当晚发生了什么,并相信这是攻击者的攻击时间,其实script kiddies在任意时间进行攻击,他们一天24小时的进行扫描,你根本不能考虑到你什么时候会被探测到。而且由于Internet的无边界性,时间也就不确定了,攻击者当地在午夜在攻击,而你这里可能是在当地时间下午一点种。 以上对系统漏洞的扫描可以用于多种用途,近来,一种新的拒绝服务攻击–分布式拒绝服务攻击DDoS,就是攻击者一个人控制了很多台有漏洞的系统,他可以遥控这些控制的系统来共同对目标系统执行拒绝服务攻击。由于多个系统被使用,所以防卫和判断源攻击地也变的非常困难。要控制多个系统,Script kiddie的策略就变的很有用,有漏洞的系统随机被判断并用来作为DDOS的垫板,越多的系统被控制,DDOS攻击的强度就越大。如stacheldraht,要了解关于更多的分布式拒绝服务攻击和怎样保护自己,请查看Paul Ferguson站上的Denialinfo

工具

这些工具一般使用起来很见大,许多工具一般只是几个选项来完成单个目标,开始工具用来构建IP数据库,这些工具很随机的扫描Internet,如一个工具有一个单一的选项,A,B和C,你可以选择一个字母来决定要扫描的网络大小,这工具然后就选择A,B,C相应的IP网络进行扫描。另一个工具使用域名如z0ne,这个工具通过对域名和子域名的区域传输操作来构造IP数据库,用户通过扫描整个.com或者.edu域来获得2百万或者更多的IP数据库,一旦发现这些IP,它们就被会被工具用户判断版本名字,操作系统,所运行的服务,如果发现系统有漏洞,black-hat就会马上进行攻击。要更好的理解这些工具,请看Know Your Enemy: Forensics

**怎样防止这类威胁 **

[阅读全文]

了解你的敌人:II

本文是 Honeynet Project 的"了解你的敌人:II"系列文章的中文翻译,原文发布于 project.honeynet.org,中文翻译来自 xfocus.net

此文章是系列中的第二篇文章,在第一篇Know Your Enemy, 我们讲述了Script kiddie相关的工具和方法,特别是他们是怎样探测漏洞然后攻击的。在第三篇Know YourEnemy III中我们将会描述Script kiddie在获得ROOT的时候将会做的事情,特别是他们是怎样覆盖踪迹和他们下一步做的是什么。当前这文章,将涉及到有关则怎样跟踪他们的行为。我们会讲述到通过你的系统记录来判断你所需的操作,和你被扫描了以后,你需要了解被探测了以后主要被干什么用,他们使用了那些工具;这里的有些例子主要是基于LINUX操作系统,但是很容易移植到其他UNIX系统中,记住,没有绝对的方法能跟踪敌人的每一步,但是,这文章会是一个好的开始。

**加强系统LOG记录的安全性

**

这文章没有主要不是针对入侵检测进行讨论,关于IDS,internet上有很多优秀的源程序供你选择,如果你对入侵检测感兴趣,我建议你使用如Network Flight Recordersnort程序来尝试。此文主要集中在智力收集信息上,特别是,怎样通过查看你的系统记录来获取攻击者操作信息,可能你对你能在自己的LOG记录上能发现多少信息感到很惊讶,但是,在我们讲述查看你记录前,我们首先必须讨论下加强你的系统LOG安全性,如果你不能信任你系统记录的完整性那这些记录将会一文不值,多数black-aht在进入系统之后第一件事情就是怎样更改记录文件,网上非常多类型的Rootkit工具可以清楚记录文件中他们的留下的踪迹(如cloak),或者阻止所有系统的记录(如伪造过的syslogd),因此,要想查看系统记录,你必须保护好你的记录文件。

这意味着你需要使用远程的LOG服务器,先不管你有多少能力保护自己的系统,在一台被入侵的系统中你不能相信你的任何记录,即使你最好的保护被入侵系统的LOG记录,black-hat也可以简单的使用rm -fr /*来完全清理你的硬盘。要保护这些文件,你必须使你所有系统的LOG记录既有本地记录也发向远程LOG服务器中,这里建立你一个只记录LOG的服务器来收集其他服务器上的信息,如果牵涉到钱的问题,你可以简单使用Linux服务器来充当你的LOG服务器,不过这台服务器必须保证非常安全,需要所有服务关闭,只允许控制台访问(如Armoring Linux所描述),还有必须保证UDP 514口没有对外连接,这样可以保护你的LOG服务器不接受从外界来的不好的或者未认证的LOG信息。

由于上述原因,这里建议你重编译syslogd程序,并让syslogd读取不同的配置文件,如/var/tmp/.conf,此方法能让black-hat没有注意到真实的配置文件位置,这项操作你可以简单的在源代码中修改"/etc/syslog.conf"条目,接着我们可以设置我们新的配置文件把信息记录到本地和远程服务器,如syslog.txt。这里请你维持一标准的配置文件/etc/syslog.conf指向所有本地LOG,虽然这份配置文件没有用,但可以让攻击者相信记录没有发忘远程记录。另一个选择方法就是让你的系统使用更安全的日志记录工具,如使用某些有完整性检查和其他方面安全加强的系统日志记录工具,如syslog-ng

把记录都记录到远程服务器中,将想上面提到的,我们可以基本上相信这些LOG的完整性,而且由于所有系统都记录在单一资源中,就比较容易的判断这些LOG的样式。我们可以在一台机器上记录所有系统记录,你所做的是对比下本地系统和远程系统的不一致性。

类型匹配

通过检查你的记录条目,你可以用来判断那些端口被扫描,许多Script kidde扫描整个网络只为一个漏洞,如你的记录显示你多数系统有来自同一远程系统的连接和同一端口,这就很可能以为着是一次漏洞的扫描,多数LINUX系统中,TCP Wrapper默认安装的,所以你可以在/var/log/secure里找到多数连接,在其他UNIX系统中,我们可以通过启动inetd后增加-t标志就可以记录所有Inetd连接。下面是一个典型的漏洞扫描,是为了扫描wu-ftpd漏洞:

/var/log/secure

Apr 10 13:43:48 mozart in.ftpd[6613]: connect from 192.168.11.200

Apr 10 13:43:51 bach in.ftpd[6613]: connect from 192.168.11.200

Apr 10 13:43:54 hadyen in.ftpd[6613]: connect from 192.168.11.200

Apr 10 13:43:57 vivaldi in.ftpd[6613]: connect from 192.168.11.200

Apr 10 13:43:58 brahms in.ftpd[6613]: connect from 192.168.11.200

[阅读全文]

了解你的敌人:动机

本文是 Honeynet Project 的"了解你的敌人:动机"系列文章的中文翻译,原文发布于 project.honeynet.org,中文翻译来自 xfocus.net

该篇文章是系列之一,该系列主要介绍黑客社团使用的工具和策略。该文章不像该系列其他的文章主要介绍黑客社团怎样怎样、特别是他们使用的技术和工具的实现,而是分析他们的动机和心理。第一部分介绍一台Solaris 2.6系统被入侵,第二部分所提到的很少有相关信息发布,介绍在黑客入侵系统后14天内在“蜜罐”中的通话和行动记录,通过这些信息我们可以了解他们为什么和怎样攻击计算机系统。在入侵后,他们紧接着在系统中放置了一个IRC bot,这个东西是由黑客们所配置和实现的,用来抓取在IRC频道中的所有聊天记录。我们在这两个星期当中一直监视这些记录,所有的信息都罗列在下面。这篇文章并不是要对整个黑客社团的行为作一个概括,相反,我们通过在事件当中一些个体行为的介绍,来给大家一些提示”他们当中某些人怎样想和怎样做“,这也是我们在安全领域所面对的一些普通现象,我们真诚的希望其他安全人员能够从中受益。

下面的所有信息是通过"honeynet"得到的。“honeynet”,顾名思义,就是由网络上大量的"蜜罐"所组成,“蜜罐"最简单的定义就是通过精心设计的将被黑客社团所攻击的目标主机。一些"蜜罐"是用来分散攻击者攻击真正主机的注意力,另外一些是用来学习攻击者所使用的工具和策略的,我们这里所提到是属于后者。在本文中提到的很多信息被做了一些修改,特别是用户名和口令、信用卡号、以及很多主机名,其他如确切技术细节、工具以及聊天记录我们并没有作修改。所有信息在被发布之前都已经递交给CERT和FBI,同时对于哪些我们确信遭受入侵的系统,大约发了370份通告给它们的管理员。

Foreword, by Brad Powell

**第一部分:入侵 **

我们这里使用的"蜜罐"是缺省安装的Solaris 2.6系统,没有任何修改和安装补丁程序。在此讨论的漏洞在任何缺省安装没有使用补丁程序的Solaris 2.6系统上都存在。这也是整个"蜜罐"的设计意图,在系统上布置漏洞并学习它是如何被攻破的。在被攻击过程中,我们可以学习黑客社团所使用的工具和策略。同时"蜜罐"本身也被设计跟踪黑客的每一步行为。

在2000年6月4日,我们的缺省安装Solaris 2.6的"蜜罐"遭受到针对rpc.ttdbserv漏洞的攻击,该漏洞允许在ToolTalk 对象数据库服务上通过溢出远程执行代码(见CVE-1999-0003)。该漏洞在SANS组织的TOP 10上名列第三。我们使用基于sniffer的免费IDS系统Snort检测到该攻击的。

Jun 4 11:37:58 lisa snort[5894]: IDS241/rpc.ttdbserv-solaris-kill: 192.168.78.12:877 -> 172.16.1.107:32775

rpc.ttdbserv漏洞允许远程用户通过缓冲溢出攻击在目标系统上以root权限执行任意命令。下面是攻击者在攻击成功后,在系统上安装后门,具体如下所示:攻击者在’/tmp/bob’文件中加上ingreslock服务(在/etc/service预定义的,端口1524),然后以改文件作为配置文件重新启动inetd,这样/bin/sh被以root权限帮定在1524端口,给予了远程用户root存取权限。

/bin/ksh -c echo ‘ingreslock stream tcp nowait root /bin/sh sh -i’ »/tmp/bob ; /usr/sbin/inetd -s /tmp/bob.

当黑客安装了后门,他紧接着连接到1524端口,作为root获得一个shell,并开始执行如下命令。他增加了两个系统用户帐号,以便以后可以telnet上来,注意这里的错误和”;“控制字符(因为1524端口的shell没有正确的环境)。

cp /etc/passwd /etc/.tp;

^Mcp /etc/shadow /etc/.ts;

echo “r:x:0:0:User:/:/sbin/sh”

/etc/passwd;

echo “re:x:500:1000:daemon:/:/sbin/sh”

/etc/passwd;

echo “r::10891::::::”

/etc/shadow;

echo “re::6445::::::”

[阅读全文]

GCC使用指南

(quack_at_xfocus.org)

GCC使用指南

使用语法:

       gcc [ option | filename ]…

       g++ [ option | filename ]…

       其中 option   为 gcc 使用时的选项(后面会再详述),

         而 filename 为欲以 gcc 处理的文件

说明:

      这 C 与 C++ 的 compiler 已将产生新程序的相关程序整合起来。产

      生一个新的程序需要经过四个阶段:预处理、编译、汇编,连结,

      而这两个编译器都能将输入的文件做不同阶段的处理。虽然原始程序

     的扩展名可用来分辨编写原始程序码所用的语言,但不同的 compiler

      ,其预设的处理程序却各不相同:

       gcc    预设经由预处理过(扩展名为.i)的文件为 C 语言,并於程

              式连结阶段以 C 的连结方式处理。

       g++    预设经由预处理过(扩展名为.i)的文件为 C++ 语言,并於程

序连结阶段以 C++ 的连结方式处理。

       原始程序码的扩展名指出所用编写程序所用的语言,以及相对应的处

       理方法:

       .c    C 原始程序                     ;   预处理、编译、汇编

       .C    C++ 原始程序                   ;   预处理、编译、汇编

       .cc   C++ 原始程序                   ;   预处理、编译、汇编

       .cxx  C++ 原始程序                   ;   预处理、编译、汇编

[阅读全文]