Posts Tagged: trap


22
十 08

给黑客设一个“死亡陷阱”

hacker

一个成功的防护措施,可以拖延攻击者,同时能给防御者提供足够的信息来了解黑客,将攻击造成的损失降至最低。网络安全防御者通过提供虚假信息,迫使攻击者浪费时间做无益的进攻,以减弱后续的入侵力量; 同时,还可获得攻击者手法和动机等相关信息,这些信息日后可用来强化现有的安全措施,例如防火墙规则和配置等。网络陷阱技术就是基于这一思路设计和开发的。

hacker02

设置陷阱

网络陷阱技术主要包括: 伪装技术(系统伪装、服务伪装等)、诱骗技术、引入技术、信息控制技术(防止攻击者通过陷阱实现跳转攻击)、数据捕获技术(用于获取并记录相关攻击信息)及数据统计和分析技术等。

网络陷阱和诱骗系统是一个主动防御体系。它是由放置在网络中的若干陷阱机、主动引入模块(完成与放火墙、入侵检测系统的联动功能)以及一个远程管理控制台组成。这些分布在网络中的陷阱机与防火墙、IDS等安全产品联动,可以形成一个联合的安全防御体系,实现提高网络安全性的目的,如附图所示。其中,每个陷阱机就是一台欺骗主机,它能够对受保护机进行模拟,包括操作系统类型、系统和应用服务等。另外它还具有强大的日志记录功能,能够对入侵过程进行详细的记录和监视,在必要的情况下,对入侵者进行跟踪。

管理控制台是一台远程主机,可以对网络中所有的陷阱机进行远程控制和监视,能够接收从陷阱机发送过来的入侵日志并根据入侵的不同程度提出警报。同时具有强大的分析功能,根据接收到的入侵日志对黑客的行为、特点等进行详细分析。同时,由于黑客进入的是陷阱机,不会对网络造成威胁。

在陷阱网络诱骗机制和主动引入的作用下,黑客的入侵行为被引入到一个安全、可控的模拟环境,消耗黑客的时间,了解其使用的技术和攻击方法,记录黑客来源和犯罪证据,从而有效地防范黑客入侵,打击计算机犯罪。

网络陷阱与诱骗系统适用于各种规格的局域网,在网络防火墙、入侵检测系统等其他安全措施的配合下,能弥补原有安全防御的不足,大大地提升网络安全防护性能。

一个成熟的网络陷阱一般要求能满足以下功能:

- 能检测攻击类型: ICMP(控制报文协议)、CGI(通用网关接口)、FTP、Telnet、端口扫描、用户账号、服务扫描、操作系统扫描、清除日志等;

- 具备IP空间欺骗技术: 能够实现IP空间欺骗;

- 包含网络流量仿真软件: 能够模拟正常服务的网络流量;

- 自动阻断功能: 外出连接数目达到设定阀值后,连接控制能够自动阻断连接;

- 路由控制功能: 路由控制能够阻止黑客利用陷阱系统向其他系统发送伪造的IP地址包;

- 数据捕获功能: 数据捕获能够记录进入和流出陷阱系统的连接并显示攻击者在陷阱主机中的操作;

- 日志记录功能: 能够对入侵者在陷阱主机中的操作信息进行远程日志记录。

4a46c396t5953ff28c919

国内外发展状况

国外,有许多安全欺骗系统被用来研究黑客技术和统计黑客行为规律,被称为“密罐”。比较有名的如“Honey Net”,它属于一种研究类型的“安全陷阱”。在商业产品领域的安全欺骗系统不多,但是,近两年有逐渐增多的趋势,其产品功能也向完善化发展。如Recourse公司的“Man Trap”,它的使用对象是一般的商业公司、企业,并具备了当前网络安全欺骗系统的一切性能。配合它的另一个产品是“Man Hunt”,增加了对入侵者进行跟踪的功能。另外,在国外市场中其他商业产品还有Homemade Honypot、Specter等,但其版本还在发展。下面列举一些目前国外流行的陷阱网络产品:

- Spector是由NetSec公司开发的一种比较简单的业务类型陷阱, 它简单、代价小、易于维护, 运行于Windows平台。Spector提供了7个完整的模拟服务, 6个预设陷阱和1个可定制陷阱, 可以检测来自13个预定义端口和1个自定义端口的攻击, 具有自动捕获攻击者活动的能力, 所有连接的IP地址、时间、服务类型和引擎的状态等信息都记录在远程主机上。

- Man Trap(捕人陷阱) 是由Recource公司开发的一个比较高级的业务型密罐,运行于Solaris操作系统上。它不是简单地模拟一些服务, 而是在Man Trap主机上提供了4个逻辑上的操作系统环境。每一个这样的环境都如同一个独立运行的操作系统, 这些逻辑上的操作系统环境被称为“牢笼”。每个“牢笼”在功能上可以是独立的, 也可以相互关联。

- Honeyd是由Niels Provos创建的一种功能强大的具有开放源代码的陷阱, 运行在Unix系统上, 可以同时模仿上千种不同的计算机, 同时呈现上千个不同的IP地址。Honeyd主要用于攻击检测, 它对那些没有使用的IP地址进行监控。

- Honeynet是高交互研究型密罐。它给予黑客完整真实的操作系统和应用服务交互。

国内,目前中科院高能物理所、浙江大学、安徽大学等科研机构和大学对网络陷阱与诱骗系统进行了研究,获得了一定的成果。但是目前国内还没有具有网络陷阱与诱骗功能的商业产品,一些网络主动防御功能也在预研阶段。

关键技术和难点

网络陷阱和诱骗系统存在如下几个方面的关键技术和难点:

- 仿真技术: 正常服务器中发现攻击后,如何将整个环境在陷阱机中进行重建, 而不会产生失真和大的时间延迟是个难点。

- 陷阱系统的监控能力: 系统级监控必须支持实时监控和反应能力。

- 自有日志的可靠性: 由于事件日志能作为证据,因此,日志的保密性、真实性和完整性及可靠性的保障特别重要。

- 信息捕获手段的研究和更新: 入侵者们不断地开发出各种工具来对抗现有的监测技术,如:Dug Song开发的 Fragrouter (将包分片重组)、RainForest Puppy开发的 Whisker(扫描工具通过对数据的分片重组绕开IDS)、K2发表的ADMmutate(可绕过现有大多数IDS的检测)、AntiIDS及加密等,这些手段对信息捕获会有很大影响。

- 与防火墙/IDS间互动功能的实现: 只有防火墙、IDS、陷阱网络之间能够有机地结合并形成一个联动整体,才能更有效地发挥防护功能。

风险是永远存在的,只要经常性地检查或者改进设定的陷阱网络环境,确保它的有效性,再结合多种被动防御系统,相信一个安全的健壮的网络系统将会离我们不远。

发表于计算机世界07年4月 王鲲


15
三 08

trap for shell

一. trap捕捉到信号之后,可以有三种反应方式:

(1)执行一段程序来处理这一信号

(2)接受信号的默认操作

(3)忽视这一信号

二. trap对上面三种方式提供了三种基本形式:

第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双

引号中的命令串。

trap ‘commands’signal-list

trap “commands” signal-list

为了恢复信号的默认操作,使用第二种形式的trap命令:

trap signal-list

第三种形式的trap命令允许忽视信号

trap ” ” signal-list

注意:

(1) 对信号11(段违例)不能捕捉,因为shell本身需要捕捉该信号去进行内存的转储。

(2) 在trap中可以定义对信号0的处理(实际上没有这个信号), shell程序在其终止(如

执行exit语句)时发出该信号。

(3) 在捕捉到signal-list中指定的信号并执行完相应的命令之后, 如果这些命令没有

将shell程序终止的话,shell程序将继续执行收到信号时所执行的命令后面的命令,这样将

很容易导致shell程序无法终止。

另外,在trap语句中,单引号和双引号是不同的,当shell程序第一次碰到trap语句时,

将把commands中的命令扫描一遍。此时若commands是用单引号括起来的话,那么shell不会

对commands中的变量和命令进行替换, 否则commands中的变量和命令将用当时具体的值来

替换。

在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚
本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我
们可不希望用户使用ctrl+C之类便进入到shell状态,做我们不希望做的事情。这便用到了信号
处理。

kill -l可以列出系统的信号名称,如下:
-bash-3.00# kill -l
1) SIGHUP    2) SIGINT    3) SIGQUIT   4) SIGILL
5) SIGTRAP   6) SIGABRT   7) SIGBUS    8) SIGFPE
9) SIGKILL   10) SIGUSR1   11) SIGSEGV   12) SIGUSR2
13) SIGPIPE   14) SIGALRM   15) SIGTERM   17) SIGCHLD
18) SIGCONT   19) SIGSTOP   20) SIGTSTP   21) SIGTTIN
22) SIGTTOU   23) SIGURG   24) SIGXCPU   25) SIGXFSZ
26) SIGVTALRM  27) SIGPROF   28) SIGWINCH  29) SIGIO
30) SIGPWR   31) SIGSYS   34) SIGRTMIN  35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX

-bash-3.00#
通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24
使用这样的语句可以使这些中断信号被忽略:
trap “” 1 2 3 24 或 trap “” HUP INT QUIT TSTP
用 trap :1 2 3 24 或 trap HUP INT QUIT TSTP使其回复默认值。
用stty -a可以列出中断信号与键盘的对应,分别执行上面的命令后,运行
tail -f /etc/passwd, 然后尝试用键盘中断,试试两种情况(默认和忽略)下有何不同。
更方便的是我们可以用在shell中用trap定义我们自己的信号处理程序,就象在c中用
signal一样。

P.S.

2010-11-2

通常使用 kill 0 来杀掉所有子进程及自己。