邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2005-1-20 20:00

[转载]Know Your Enemy——模态Linux

文章作者:Honeynet Project
文章翻译:tiffany
信息来源:s8s8网络技术

Honeynets 可能对配置是困难的和资源强烈的展开,需要多种技术和系统。 许多使用者或研究 Honeynets 的组织为配置可能没有资源。 因此,这一张纸将会把重心集中在建筑 Honeynet 使用一部单一计算机和自由的,OpenSource 软件。 这藉由建筑虚拟的 Honeynet ,使用 OpenSource 解决使用者- 模态 Linux(时常叫做 UML) 和 IPTables 将会是完成的。 格式这是纸是 HOWTO,它将会一步一步地描述该如何展开 Honeynet 数据控制和数据抓取建立在一部单一计算机上的 Honeynet 然后讨论一个方法。 这一张纸承担你已经读而且 KYE 的观念: Honeynets 和报纸 KYE: 虚拟的 Honeynets。 这一张纸将不进入关于该如何展开进步 Honeynet 技术的细节。 那未来稍后将会来纸认识你的敌人: GenII Honeynet。 改为,这一张纸将会详细地包括该如何建立 Honeynet 测试的环境使用基本的 Honeynet 技术。 如果这曾经是第一次你已经建造或展开 Honeynet,我们高度地推荐你在一个中心或测试环境中最初展开这。 你已经被。

攻击的计划
这一张纸进入五个部份之内被故障。 在第一个部份中我们将会描述 UML 是什么,它工作的方式, 和该如何安装并且配置它。 在第二个部份中,我们描述该如何产生在你的单一计算机上的多样系统的一个网络, 包括所有的网络议题。 在第三的部份中我们描述该如何实现在你的 UML Honeynet 上的数据控制使用 IPTables 。 在第四个部份中我们描述该如何实现数据抓取使用鼻息。 最后,在第五个部份中,我们描述该如何测试你的装备。


使用者模态 Linux
使用者- 模态 Linux 是产生一部虚拟的机器 OpenSource 解决。 产生而且被杰夫堤防维护,你能在 http:// user-模态-linux.sourceforge.net 找它。 UML 允许你同时跑在相同的系统上的 Linux 的多样例证。 这一个能力与商业的解决 VMware 类似,然而 UML 现在被限制到 Linux 。 UML 被设计来作多种目的, 像是核心除错,测试申请等。我们将要使用这一个能力跑在一部单一计算机上的 Honeynet, 明确地和在它后面的 honeypot 的单一出入口。 对于这一张纸的这一个目的,我们将会该如何安装并且跑在一个红色的帽子 7.3 系统上的 UML 。 我们将会使用被用于 VMware 软件的相同用辞,明确地主人系统是最初的操作在盒子上的系统赛跑。 任何的和所有的附加操作被增加 (虚拟的操作系统) 的系统将会被称为客人系统。 使这一个配置看得见,在 KYE 中提及图 1: 虚拟的 Honeynets 纸。

不像 VMware , UML 不需要任何的附加 virtualization 软件。 改为,你补缀你跑如你的客人操作系统的 Linux 核心的来源。这 UML 片把核心转换成被称为 'linux' 的可运行的二进,允许客人核心涉及你的系统如 seperate 操作系统。当你跑这被补缀核心的 UML 的时候,你做的全部是给予它 filesystem 使用 , 和你现在让一个独立的 Linux 系统流动的在你计算机上 , 二作为一的价格! 这个新的核心是在真正的核心上的 userspace 申请赛跑。 (主人操作系统) UML 核心接受来自它的申请系统呼叫而且送/ 请求他们到主人核心。 也有附加的管理而且网络 UML 用工具工作你能在使你的生活更容易的计算机上安装。

一些最近已经被增加到 UML 的最令人兴奋的特征被明确地为 honeypots 设计。 这些能力 signifigantly 改良我们的 UML Honeynet 。 我们将会在下面加亮这些能力中的三个,然而你能找在 http:// user-模态-linux.sf.net/honeypots.html 的技术上的细节和 HOWTO 。

TTY Logging:: UML 有能力捕获所有的攻击者的按键,即使他们使用像 SSH 这样的密码技术与 UML honeypot 沟通。 UML 对经过 tty 装置伐木所有的交通在外对主人的 tty 驾驶者用片做这。 与实际的 honeypot 砍伐原木机制相反,这是无法发觉的和无法推翻的。 它因素没有网络交通或可能是发现从 honeypot 之内的别东西。 它在 UML 核心中是也, 意谓它被任何事不能被击败侵入者可能做。
hppfs: 和虚拟的 honeypot 的关心之一正在采指纹。 一经一个攻击者有机会接近虚拟的操作系统, 他们可能能够决定它是 honeypot。 UML 用能力镇静这危险修正那 / proc 文件系统出现如真实的操作系统。
skas 模态: UML 最近被重做允许它在一个 UML 核心在一个完全地分开的主人住址来自它的程序空间中的模态中跑。 这使 UML 核心二进和数据完全地看不见到它的程序, 而且对任何人伐木在到它。 它藉着它的程序从干预也使 UML 核心数据安心。
建立并且安装我们决意的 UML 使用一个 prebuilt 转/每分。 RPM 是红色的帽子 Linux 的包裹,允许我们只是安装软件的整个包裹。 UML 包裹将会为我们做二件事物。 首先,它用 UML 片安装一个 prebuilt 核心,这被安装如可运行的二进 'linux' 。 这将会允许我们跑一个 seperate Linux 核心。 除此之外,这一个包裹包含所有的 UML 公用程序。 你能下载从 UML 下载位置来的所有 UML 二进和原始码。 在下面是指令过去一直为一个 2.4.19 核心安装一个 prebuilt UML 转/每分。 你然后能申请的东西和它安装的公用程序。



host #rpm -ivh user_mode_linux-2.4.19.5um-0.i386.rpm

host #rpm -ql user_mode_linux-2.4.19.5um-0.i386
/usr/bin/jailtest
/usr/bin/linux <- executable binary that is really the UML kernel, the Guest OS
/usr/bin/tunctl
/usr/bin/uml_mconsole
/usr/bin/uml_moo
/usr/bin/uml_net
/usr/bin/uml_switch
/usr/lib/uml/config
/usr/lib/uml/modules-2.2.tar
/usr/lib/uml/modules-2.4.tar
/usr/lib/uml/port-helper

那藉由安装这 RPM 你有完成的二件事物。 首先,你已经安装可运行的核心 (/usr//linux),这是我们的客人核心。 其次,你已经安装各种不同的 UML 公用程序。 如果你同时跑任何的附加核心,你只必须下载 prebuilt UML 核心, 或使用 UML 在核心原始码上的片。 基于我们的测试, 它只出现 RPM uml 2.4.19 版-5 能处理赛跑一次一个流动的核心。 如果你跑多样的核心,你将会必须下载最近的 UML 核心片)。

好, 剩下只有步骤为我们的客人核心,一个文件系统。 善行正在有另外的一个核心什么当为一个攻击者互相影响没有文件系统由于? 再一次,我们去 UML 下载位置而且找预先建造 filesystem 图像。 或如果你,你能只是建立你自己的带 dd(1) 一个已存在的文件系统的图像。 为了这 HOWTO ,我们安装并且使用 RedHat 7.2 伺候器文件系统图像。 (被压缩的大小 65个万位元组) 我们已经修正这一个文件系统包括二进远端登入 (1) , vi(1) 和微微。 (1) 一经你已经下载图像,你准备好去,积极参与的没有结构。 为了要开始你的新客人操作系统,你只是不压缩被下载的 filesystem 图像, 然后启始你的 linux 二进位的使用 filesystem。 指令会看起来像:

host #gzip -d root_fs.rh-7.2-server.pristine.20021012.gz
host #linux ubd0=root_fs.rh-7.2-server.pristine.20021012 eth0=tuntap,,,192.168.0.254


当你运行 &#39;linux&#39; 指令的时候,你应该以你的终端机口吻新的操作系统向上踢。 你应该有希望地以一个登录提示作为结束。 和使用者 &#39;根&#39; 和密码 &#39;根&#39; 给的正直登录你存取到那个操作系统。 祝贺,你做了它! 现在, 让你刚刚做的, 和该哪里从在这里去。


分开 2: 建立网络
好, 既然你正在跑二操作系统, 下一个步骤要拿客人操作系统,我们的 honeypot, 定路线过我们的出入口和在外到英特网。 这意谓,如果任何人和我们的客人操作系统说话,他们首先必须穿过主人。 你不可能它,但是你已经让装备所有的议题积极参与的。 提到到最后命令在我们运行,在我们发射了指令 &#39;linux&#39; 的地方上面, 明确地 part eth0=tuntap,,,192.168.0.254. 这一个指令做二件事物。 首先,它产生在主人系统上的一个新的合乎逻辑的接口叫做了 tap0。 这个合乎逻辑的接口现在是为客人操作系统出入口接口,我们的 honeypot。 tap0 接口的 IP 住址 , 和假设值客人操作系统的出入口,是 192.168.0.254 。将会对你是不同的唯一事物是在你的主人系统上的 eth0 的 IP 住址, 这将会改变仰赖无论什么你配置它当做。 在我们的例子情况,它将会是 192.168.1.1 。 确定你的装备,在主人操作系统上跑指令:

host #ifconfig -a


指令的 eth0 部份产生在客人操作系统上的接口 eth0, 告诉它接口合乎逻辑地定路线过在主人系统上的 tap0。 我们已经留下的唯一事物要给在我们的客人操作系统上的 eth0 在接口 eth0 上的一个 IP 住址。 这已经在我们的文件系统上被做。 在我们的预先建造 RedHat 7.2 伺候器的情况,在 eth0 上的它 IP 住址是 192.168.0.144 。 如果你改变在客人 RedHat 伺候器上的任何一个结构, 你只是作像你一样的那些修正会在任何其他的系统上。 确定这一种装备,涉及客人操作系统指令:

guest #ifconfig -a
guest #netstat -nr

对于你的虚拟网络现在看起来像的一个较好的概念,提及图 2.

下一个步骤要确定客人系统能到和经过出入口的路径。 这意谓你首先咻地假设值出入口的 IP 住址,在这一个情形 192.168.0.254 中. 这在主人系统上的真实接口 tap0 中。 一经你确定你能咻地内在的接口, 尝试咻地外部主人系统的接口.(很有可能 IP 住址约束的到 eth0) 这确定你也是经过主人系统工作路线排定。 如果子弹飞过空中的声音不工作, 确定你不在跑在主人上的一个防火墙, 而且加倍检查你的网络在主人和客人操作系统上设定。 确定这一种装备,在客人操作系统上跑指令:

guest #ping 192.168.0.254


guest #ping (external IP of Host OS, interface eth0)


分开 3: 数据控制
一经你有装备 UML 而且网络,下一个步骤是数据控制。 数据控制的目的要包含攻击者能做的回内地的和 Honeynet 的出境。 典型地,我们允许对 Honeynet 系统 , 但是界限出境连接的回内地的东西。 为了这一张纸,我们将会使用 IPTables ,带 Linux 来的 OpenSource 防火墙解决。 IPTables 是一个高度地有柔性的 stateful 防火墙, 包括为连接极限,网络住址翻译,砍伐原木和多数其他的特征能力。 我们将会配置 IPTables 担任在我们的主人,计算出境储存器上的一个过滤器。 一经一个界限为出境连接已经被碰到,所有的进一步的尝试被阻塞,阻止被妥协处理的 honeypot 伤害其他的系统。 配置和实现这些能力可能是极端复杂。然而, Honeynet 计画有发展一个被称为为你做所有的工作 rc.firewall 的 IPTables 手写体。 当他们适用于你的 Honeynet 的时候 , 你只必须修变量,然后手写。

如果你你的出入口在层三个工作路线排定模态 , 或层二个剪刀撑模态中跑,你必须决定的第一件事物是。 层二个剪刀撑 (也即是 GenII, 或第二代) 是被的方法。 当你的出入口正在当作一座桥用的时候,没有储存器的工作路线排定或 TTL 渐减,它担任一个看不见的过滤装置,为攻击者使它更加困难发现。 然而, 为 IPTables 在剪刀撑模态中工作,你的核心一定被补缀支援它。 预先设定地,最大多数的核心不支援剪刀撑模态的 IPTables 。 如果你补缀你的核心支援这,你为了这 howto 能在 http:// bridge.sourceforge.net/download.html. 找片, 我们将会承担你的核心不支援剪刀撑模态的 IPTables。 因此我们将会描述该如何用工作路线排定模态的你出入口建立你的虚拟 Honeynet 使用网络住址翻译。

让掩护该如何配置 rc.firewall 手写体实现这一个功能性。 有二个紧要关头的区域配置,那个网络议题和控制议题。 因为网络,我们必须识别主人和客人系统的 IP 住址和网络。 如果你正在层三个工作路线排定模态中跑,手写体照顾所有的网络住址翻译议题。 如果你正在层二个剪刀撑模态中跑,手写体照顾所有的剪刀撑议题。 ,为了我们正在使用层三个工作路线排定的这一张纸。 对于控制,我们必须定义我们从客人系统允许多少出境连接。 那里将会至少是五个变数以将会是不同的在你系统上,而且你将会必须修正。 明确地,

第一, 预先设定地 rc.firewall 手写体层二个剪刀撑模态的奔跑。 你将会必须修正它在层三个工作路线排定模态中跑。
# The MODE variable tells the script to #setup a bridge HoneyWall
# or a NATing HoneyWall.
MODE="nat"
#MODE="bridge"

其次,你将会设定客人操作系统的公众 IP 住址。 这是外部你为网络住址翻译使用的 IP 住址。 这也是 IP 住址 hackers 将会使用攻击你的虚拟 honeypot。 如果你正在使用剪刀撑模态的你出入口,这一个变数也将会被用,然而你给它 honeypots 的真正 IP&#39;s, 当没有住址翻译之时。 PUBLIC_IP="192.168.1.144"

第三,你将会配置 honeypot 的内在 IP 住址。 这是你的客人操作系统的真正 IP 住址。 这一个变数不被用如果你是在剪刀撑模态中。
HPOT_IP="192.168.0.144"

第四的,你将会配置外部主人操作系统的 IP 住址。 这是外部你的防火墙的 IP 住址,你的出入口。 对于我们的例子,我们使用下列各项。
INET_IP="192.168.1.1"

最后,你将会识别主人操作系统的内在接口的名字。 预先设定地,这是 eth1 。 然而,我们正在使用虚拟的接口 tap0, 和必须修正这一个变数。
LAN_IFACE="tap0"

这些是最小量你必须修正的 varaibles,可能有其它仰赖你的系统结构。 有你能更新的其他选项,像是遥远的管理,限制什么连接防火墙能开始, 而且给你的 honepyots 无限制的 DNS 通路。 也,预先设定地 ,手写体极限每 honeypot 一小时下列各项出境连接;另外地的 9个传输控制协议连接, 20个 UDP 连接, 50个 ICMP 连接和 10 IP。 手写体的细节是超过这一张纸的范围。 为了要更这些变数, 我们推荐你详细地检讨手写体和出自中心环境的不同选项尝试。 一经你已经配置 rc.firewall 手写体,你藉由运行手写体实现它。

host #/.rc.firewall

确定你已经成功地跑手写体,有你检查的二件事物。 首先, 确定那住址翻译正在工作。 如果一个新的, 合乎逻辑的接口已经被增加到主人系统,你能确定这。 其次,检讨 IPTables 规则。

host #ifconfig -a


host #iptables -L -n

一次被证实的,你数据控制在适当的位置。 为实现数据控制也有多种其他的工具。 举例来说,你能合并鼻息- 线内的使用阻塞或修正已知的攻击。 这被藉由利用 IPTable 手写体的储列选项做。 其他的选项包括带宽阻塞的使用。 然而,这些进步能力是超过这一张纸的范围。 对于附加的选项, 检查 Honeynet 用工具工作区段。

分开 4: 数据抓取
一经我们已经完成数据控制,下一个步骤是数据抓取。 数据抓取的目的要捕获所有的攻击者的活动,没有他们博学。 有多种方法实现这, 然而我们将会把重心集中在二,IPTable IPTable 圆木是被防火墙产生每当有的圆木一回内地的或出境连接。 是我们将会使用捕获所有的网络活动的 OpenSource 身份证解决。 当我们更早地讨论的时候,UML 也有能力捕获来自核心空间的所有 TTY 活动。

对于 IPTables ,砍伐原木已经为我们被 rc.firewall 手写体配置。 它配置成伐木全新的回内地的和出境的关联 /变容体/圆木/信息。 任何的回内地的连接是探查,扫描或攻击的指示。 任何的出境连接指出 honeypot 已经被妥协处理。 IPTable 的价值主要地为提醒是一。 没有充足的数据告诉我们攻击者正在做的。 我们配置它捕获每个储存器和它的进入,或留下 Honeynet 的完整负载量。 在这里联编是一个 config 文件以将会捕获并且攻击者活动。。 你将会找一个开始,而且使用的简单启始手写体那被推荐 config 文件。 确定更新启始手写体检测主人操作系统的 tap0 接口。 你意志最大多数的 likey 跑这一个手写体每日的,跑来自 cron 的手写体。

host #./snort-start.sh

为实现数据是超过这一张纸的范围抓取, 像是 Sebek 也有多种其他的工具。 对于附加的选项, 检查 Honeynet 用工具工作区段。

分开 V: 尝试你的 UML Honeynet
第五个 , 和结局步骤,建筑我们的 UML Honeynet 要测试我们的结构, 明确地数据控制和数据抓取。 我们确定我们的 Honeynet 需求正在当做期望举止。 测试数据控制是相对地简单。我们确定两者都开始一个出境连接的任何 honeypot 的尝试被伐木而且控制。所有的连接尝试应该伐木一个进入到 /变容体/圆木/信息, 提醒我们一个出境连接已经被开始,而且 honeypot 很有可能已经被妥协处理。 也,界限已经被遇见的一次,我们确定没有较多的出境连接被允许。 为了这一张纸,我们将会测试出境传输控制协议连接,预先设定地对一小时 9种尝试被限制。 测试这我们将会二扇终端机窗户开着的。

首先我们打开在主人操作系统上的一个终端机而且检测 IPTable 圆木在 /变容体/圆木/信息。当我们穿越开始来自客人操作系统的出境连接我们的主人出入口的时候,我们应该在那里被伐木的尝试。 这数据是紧要关头的对提醒目的, 指出 honeypot 已经被攻击,和攻击者 ( 或自动化了工具) 正在尝试出境连接。 和第 10种出境尝试的出发,传输控制协议连接应该被阻塞 (界限被碰到) 。 在下面是你在尝试任何的出境连接之前运行的指令。

host #tail -f /var/log/messages

下面,打开在 honeypot 系统上的一个终端机,我们的客人操作系统。 从那里你将会开始多种出境传输控制协议连接。 举例来说,从到远端登入的客人操作系统尝试到在外部 192.168.1.0/24个网络上的一个不同的系统。 它不有关系如果这些系统存在,的长就像开始的连接被尝试一样多。 储存器经过在我们的主人操作系统系统上的 tap0 接口应该被溃败而且伐木被 IPTables 防火墙在 /变容体/圆木/信息。 我们应该九个连接允许了出境, 然后在之后降低。

客人 #远端登入 192.168.1.105
Trying 192.168.1.105 。。。

客人 #远端登入 192.168.1.220 21
Trying 192.168.1.220 。。。


客人 #远端登入 192.168.1.5 80
Trying 192.168.1.5 。。。

客人 #远端登入 192.168.1.115 6667
Trying 192.168.1.115 。。。

如果你尝试, 而且在界限之后阻塞。 你已经成功地实现数据控制。 然后,我们确定数据抓取正在发生,明确地鼻息程序正在捕获所有的储存器和他们的正在进入和留下 Honeynet 的完整负载量。 一个鼻息程序应该是监听主人操作系统的内在接口, 明确地 tap0。 测试在 192.168.1.0/24 网络上的一些系统。

Guest #ping -c 3 192.168.1.105


鼻息程序应该要捕获三声 ICMP 回声请求储存器和他们的完整负载量的。 它应该要伐木对 tcpdump 二进位的圆木格式的活动。 确定文件,一个例子在下面。

host #snort -vdr *snort.log


那它你刚刚完成你的数据控制的一个非常基本的测试,而且数据捕获能力。 有相当较多的进步测试你能尝试, 如此的当做使用秒, seperate 计算机以 honeypot 担任在英特网上的一个系统而且互相影响。 然而那是超过这一张纸的范围。

结论
这一张纸的目的要一步一步地描述该如何建立虚拟的 Honeynet 使用 OpenSource 工具。 这解决的价值是一容易的而且为研究和发展花费了有效的 Honeynet。 一般希望这一张纸将会为安全社区使它更容易与而且合作 Honeynet 技术

页: [1]
© 1999-2008 EvilOctal Security Team