安全系列教程之脚本与安全第一部 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
http://www.sina.com.cn 2006年09月05日 14:47 赛迪网 | ||||||||||||||
这篇文章是两个系列的第一部分,我会先简单介绍一下PERL脚本。 脚本将在几乎每一个环节上对作为一个计算机安全专家的你的工作产生影响。可是,PERL究竟能为你做什么?它的一个好处就是能够快速有效的分析安全设备的输出文件。 脚本与你
作为一个计算机安全专家的生活确实不错,不是吗?我的意思是说我们最终会以我们喜欢做的事情为工作,并且实际上能从中取得报酬。但是它不能比这更好了。和高科技设备打交道,并且保证其所有的功能运行顺利仍然是一件非常繁琐的事情。如果你足够幸运只要关注与你公司相关的安全问题,那么生活会更加美好。事实是当一个系统管理人员是一份艰难的工作。也就是说我不会喜欢以此为生。 在你每天的工作中,你在做自己的事情的同时周围所有的计算机设备在完成它们自己的任务。所有这些设备有什么共同之处呢?它们一向都是自动完成任务。不论它是管理着其监控下无数任务的活动目录控制器,还是控制你网络存取的路由器和防火墙。我们能看到它们全是自动执行任务。因为时间太集中了是无法坐在这些设备旁边手动完成它们的工作。 脚本 为了在计算机上使某些任务自动化,你真的确实需要学习使用脚本语言。我说的是学习一种脚本语言。我认为两种最流行最强大的脚本就是PERL和Python。这两种脚本语言都是通过编译器解释的。我想说的是你需要在你的电脑上面安装解释器,这样你的程序才能被“解释”和“执行”。 在这篇文章里面我们将了解PERL以及如何通过借助于PERL脚本语言的力量使用它来减轻你的负担。显示的例子将只是一个PERL怎样处理的小实例,并且为了方便学习,脚本将比较短。如果你没有在电脑上安装PERL,简单地去ActiveState网站下个MSI安装包。MSI安装是很快的。PERL的优秀之处在于它可以在其它的操作系统下使用,只要你安装了PERL的库。 我所做的是创建了一个小文件,它包含来自嗅探程序的“alert.ids”文件部分输出。我们将简单的从这个文件中挑出某些内容。在这个实例里,我们将寻找在称为"articlefile"的输入文件里IP 地址为192.168.1.102的全部例子。同上所述,这是一个PERL处理最简单的例子。这表示,尽管这是一个小例子,也是有用的。你可能在以后想要通过观察某一IP地址的出现次数来分析一些日志。我贴在下面的脚本将很好的实现这个功能,只要你将相关的输入文件路径改成自己的文件路径就可以了。 看PERL写的脚本! 为了说明PERL是如此方便,以下是我写的全功能的PERL脚本。 #!/usr/bin/perl -w$pattern = "(192.168.1.102)";open(INPUT, 'c:\articlefile') ||die "can't open the file called article_file: $1";open(OUTPUT, '>c:\articleoutput') ||die "can't write to the file called script_output: $1";while(<INPUT>){if ($_ =~(m/$pattern/)){print OUTPUT "$_\n";}}close(INPUT);close(OUTPUT);Now I also pasted the test input file seen below I created called “articlefile” so that you can see exactly what is parsed out by the PERL script above. 下面是我创建的名为“articlefile”的测试输入文件,这样你就能清楚的看到上面PERL脚本分析出来的内容。 [**] [1:2351:8] NETBIOS DCERPC ISystemActivator path overflow attempt little endian [**][Classification: Attempted Administrator Privilege Gain] [Priority: 1]01/28-08:49:36.011482 192.168.1.102:1040 -> 192.168.1.101:135TCP TTL:64 TOS:0x0 ID:31304 IpLen:20 DgmLen:1500 DF***A**** Seq: 0xFFBD6980Ack: 0x1071DF86Win: 0x5B4TcpLen: 32TCP Options (3) => NOP NOP TS: 3937142 27317[Xref => http://cgi.nessus.org/plugins/dump.php3?id=11808][Xref =>http://www.microsoft.com/technet/security/bulletin/MS03-026.mspx][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0352][Xref =>http://www.securityfocus.com/bid/8205][**] [1:2351:8] NETBIOS DCERPC ISystemActivator path overflow attempt little endian [**][Classification: Attempted Administrator Privilege Gain] [Priority: 1]01/28-08:49:36.011482 192.168.1.103:1040 -> 192.168.1.101:135 #changed ip address hereTCP TTL:64 TOS:0x0 ID:31304 IpLen:20 DgmLen:1500 DF***A**** Seq: 0xFFBD6980Ack: 0x1071DF86Win: 0x5B4TcpLen: 32TCP Options (3) => NOP NOP TS: 3937142 27317[Xref => http://cgi.nessus.org/plugins/dump.php3?id=11808][Xref =>http://www.microsoft.com/technet/security/bulletin/MS03-026.mspx][Xref =>http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0352][Xref =>http://www.securityfocus.com/bid/8205] 好了!现在我们所要做的就是调用名为“scripting_example.pl”的PERL脚本,我们还要有一个名为“articleoutput”的输出文件。顺便说一句,如果你想复制粘贴我上面写的脚本,只要简单的将其复制粘贴到记事本里。你可以叫它“scripting_example.pl”。你能叫它任何你喜欢的名字,但是要记住你将可能要修改脚本里第五行的文件名。第五行是open(INPUT……的那一行。最后你将要复制粘贴上面的输入文件。它显示了嗅探程序的“alert.ids”输出文件。 现在你已经成功的将这个脚本复制粘贴到电脑的C盘上,例如:“c:\”,你已经可以在DOS提示符下调用了。
正如你在上面的屏幕截图能看到的,你在PERL脚本名字后面附加“.pl”,这样PERL解释器就明白它是什么了。一旦完成了,命令提示符就重新出现了。整个过程花费大概半秒。现在它已经完成了,你需要通过检查是否存在一个叫“articleoutput”的文件确定它实现了。不妨来看看。
非常好!我们的脚本确实运作了,它提取出了包含我们要寻找的IP地址即:192.168.1.102的行。这个IP地址在我们的标量中称为 $pattern。 如果你有需要的话,你可以同时输入更多的模式寻找,而这将只对脚本本身很小的调整。当涉及到正则表达时,PERL几乎是王。这里有整整一本书讲使用PERL构建正则表达模式。相信我,整整一本书讲构建正则表达并不为过。构建正则表达经常是一个修改的经验过程。 总结 好,我们可以看到仅仅几行PERL就能为自己创立一个小的脚本。它能够把我们从手工寻找某些内容的乏味工作中解救出来,或者是避免了使用象grep那样工具的麻烦。PERL特别适合这类的和更加大批量的工作。同样也有许多已经完成了的模块,这样你也可以用来简化你的脚本任务。在下一篇文章里,我们将研究其中的一个模块。 一个这样的例子是PERL拥有的io:module。让这个模块代你处理大多数的套接字创建是非常方便的。很像netcat工具,你能使用PERL产生一些任意的输入进行充分测试。在后面的文章里我将阐述如何修改一个现有的PERL脚本来满足自己的需要。好,以上是给大家的内容,希望你们喜欢这个关于PERL脚本的简单介绍。下次见! =============================================== 原文链接: http://www.windowsecurity.com/articles/Scripting-Security-Part1.html 作者:Don Parker. (t116) |