如今大家都是ADSL上网,当你查网费时就会发现,每次上网电信都会记录下你的网卡MAC地址,这是因为IP地址是动态的(每次上网都不同),而MAC地址却是不变的──每张网卡都有一个与众不同的MAC(物理)地址,因此MAC地址就成了客户的网上身份证,通过记录MAC地址,即可确认是你上的网!

  一、MAC地址的用途

  MAC地址在网卡中是固定的,每张网卡的MAC地址都不一样。网卡在制作过程中,厂家会在它的EPROM里面烧录上一组数字,这组数字,每张网卡都各不相同,这就是网卡的MAC(物理)地址。

  由于MAC地址的唯一性,因此它主要用来识别网络中用户的身份。例如ADSL上网时,电信用它来记费,确认是你上的网;在校园网中,MAC地址也可以用来识别用户。对于校园网的正式用户,其MAC地址会登记在服务器端,假如你是非法用户,服务器中就没有你的网卡MAC地址,这样当你试图连上网时,服务器就会立刻认出你、阻止你连上网络。

  二、MAC地址是可以修改的

  有些场合,例如冒充网络中的正式用户,就需要修改你的网卡MAC。要修改MAC地址,你可以通过硬件的方法实现,即利用网卡厂家提供的修改程序来烧录网卡的EEPROM,这样做虽然可行,但是风险很大、操作也复杂,即使你很有经验,也难免在操作中出现错误。

  其实你完全没必要用烧录方法、修改网卡中的MAC地址。要知道Windows安装的时候,会自动从网卡中读入MAC地址,把它存放在注册表中以备后用。当数据在网络中传输时,从网卡发出的数据包中要求有一个源MAC地址,这个MAC地址就是从注册表中读取的(并非从网卡中读取的),因此只要你修改了注册表中的MAC地址,就相当于改了网卡EEPROM中的MAC地址,两者实际效果是完全相同的!

  三、修改注册表中MAC的方法

  1、使用软件修改

  本方法适用于所有类型的网卡。在不同的Windows下,要用不同的软件修改MAC。

  (1)Win2003/XP/2000

  如果你的系统是Win2003/XP/2000,可以使用SMAC(下载地址http://www.klcconsulting.net/smac/#Download)。这款软件并不能修改网卡中的MAC地址,只能修改注册表中的MAC。

  该软件有两种运行模式,如果你启用了“Windows Management Instrumentation (WMI)”服务,软件即运行在[WBEM ON]模式下,可以显示更多的网卡信息,否则运行在[WBEM OFF]模式下,在软件窗口标题栏可看到当前运行模式。

  软件的使用非常简单,运行后点击“Refresh”,窗口中的列表框将显示网卡的类型、IP地址、Active MAC等,在下面六个输入框中输入你指定的MAC地址,然后点击右侧的“Update MAC”,即可修改完成;最后重启电脑使修改值生效。

  注意,试用版不能输入新的MAC地址,只能把MAC改成0C-0C-0C-0C-0C-01

  (2)Win98

  如果你的系统是Win98,建议使用“Mac扫描器”,这个工具可以修改注册表中的MAC地址,然后重启电脑使修改生效。

  2、在网卡属性中修改

  如果你的网卡采用了RealTek公司的RTL8139芯片,就可以在网卡属性中修改MAC,这样注册表中的MAC地址也会一同改变,方法如下:

  在Win2003/XP/2000中,点击菜单“开始”/设置/控制面板,双击“系统”,点击“硬件”/设备管理器,在设备管理器中展开“网络适配器”,右击要修改MAC地址的网卡,选择“属性”;点击“高级”选项卡,在“属性”下,选择点击Network Address项目(图2),在右侧“值”的下方,输入你要指定的MAC地址值(例如020202020202),注意要连续输入12个数字或字母(中间不要输入-);重新启动电脑后,修改即可生效。至于Win98下的MAC修改方法,与以上方法类似。
  如果修改之后,在Win2003/XP/2000 下,你又想把注册表中的MAC地址恢复成原样,可以选择“Network Address”项,将右边的值选择为“不存在”,再重新启动即可;在Win98下是选择“没有显示”。

  3、在注册表中修改

  对于非RTL8139芯片的网卡,你可以直接修改注册表中的MAC,注意:修改注册表前,要先备份注册表。

  (1)Win2003/XP/2000

  点击“开始”/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E972-E325-11CE-BFC1-08002BE10318}000、0001、0002等主键下,查找DriverDesc的内容,了解网卡使用了哪个主键(例如0001),如果主键下有params项,则该主键也是网卡所使用的;

  例如网卡使用了0001主键,因此我们就选中它,在其右边建一个字符串项(名为NetworkAddress),双击该串,输入你指定的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);在0001下的NDIparams中添加一项子键(名为NetworkAddress),选择该子键,在其右边添加名为default的字符串,键值为修改后的MAC地址,与上面的数值相同;修改后重启生效。

  (2)Win98

  点击“开始”/运行,键入winipcfg选择你要修改的网卡,并记录下MAC地址值;然后点击“开始”/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINESystemCurrent ControlSetServicesClassNet,下面有“0000”、“0001”、“0002”等子键;从“0000”子键开始点击,依次查找子键下的“DriverDesc”键内容,直到找到刚才记录的MAC地址为止;

  例如网卡使用了0001主键,因此我们就选中它,在其右边新建一个串,名称为networkaddress,再双击该串,输入新的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);最后重启电脑使修改生效。

4、linux系统

  如果你的系统是linux,想修改系统中的MAC地址(例如改为020202020202),操作方法是:用#ifconfig eth0 down 先把网卡禁用,否则会报告系统忙,无法更改;然后再用ifconfig eth0 hw ether 020202020202 即可。

  如果你想永久修改系统中的MAC地址,可以这样操作:在/etc/rc.d/rc.local中加入以下三行(也可在/etc/init.d/network中添加以下三行)

  ifconfig eth0 down

  ifconfig eth0 hw ether 020202020202

  ifconfig eth0 up

  四、MAC地址改好了吗?

  如果你想知道系统中的MAC地址是否修改成功了,可以这样操作:重启电脑,在命令提示符下,输入IPconfig/all命令,于是Physical Address右边就会显示一个地址,你检查一下即可得知MAC是否修改成功了。

 

  首先提议:

  如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼。

  从“控制面板”中找到“用户账户”项,选中自己的账户进入如图所示的控制界面,我们可以看到左侧任务列表中有一项“阻止一个已忘记的密码”,点击后便可打开“忘记密码向导”,向导会提示插入一张格式化过的空白磁盘,操作过程中会让你输入该账户所使用的密码,很快便可以创建一张密码重设盘。

  以后,当我们忘记了账户密码的时候,在没有使用“欢迎屏幕”登录方式的情况下登录到Windows XP后,按下“Ctrl + Alt + Del”组合键,出现“Windows 安全”窗口,点击选项中“更改密码”按钮,出现更改密码窗口。这个窗口中,将当前用户的密码备份,点击左下角“备份”按钮,激活“忘记密码向导”,按照提示创建密码重设盘。

  如果在Windows XP的登录窗口输入了错误的密码,就会弹出“登录失败”窗口,如果你的确想不起来自己的密码是什么时,可点击“重设”按钮,启动密码重设向导,通过刚才所创建的密码重设盘,就可以用这张密码重设盘更改密码并启动系统。重新设定密码,登录Windows XP。

  “密码重设盘”的创建,含有一定的危险性,因为任何人都可以使用这一张“密码重设盘”来登录Windows XP,都可以以该用户的名义进入用户帐户,操作真正用户所能操作的一切,所以必须将“密码重设盘”保存在适当的地方,以防丢失或失泄密。

  方法1——利用“administrator”(此方法适用于管理员用户名不是“administrator”的情况)

  我们知道在安装Windows XP过程中,首先是以“administrator”默认登录,然后会要求创建一个新账户,以进入Windows XP时使用此新建账户登录,而且在Windows XP的登录界面中也只会出现创建的这个用户账号,不会出现“administrator”,但实际上该“administrator”账号还是存在的,并且密码为空。

  当我们了解了这一点以后,假如忘记了登录密码的话,在登录界面上,按住Ctrl+Alt键,再按住Del键二次,即可出现经典的登录画面,此时在用户名处键入“administrator”,密码为空进入,然后再修改“zhangbp”的口令即可。

  方法2——删除SAM文件(注意,此法只适用于WIN2000)

  Windows NT/2000/XP中对用户帐户的安全管理使用了安全帐号管理器(Security Account Manager , SAM)的机制,安全帐号管理器对帐号的管理是通过安全标识进行的,安全标识在帐号创建时就同时创建,一旦帐号被删除,安全标识也同时被删。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识完全不同。因此,一旦某个帐号被用户名重建帐号,也会被赋予不同的安全标识,不会保留原来的权限。安全帐号管理器的具体表现就是%SystemRoot%system32configsam文件。SAM文件是Windows NT/2000/XP的用户帐户数据库,所有用户的登录名以及口令等相关信息都会保存在这个文件中。

  知道了这些,我们的解决办法也产生了:删除SAM文件,启动系统,它会重建一个干净清白的SAM,里面自然没有密码了。

  不过,这么简单的方法在XP是不适用的,可能微软以此为BUG,做了限制……所以现在在XP系统下,即使你删除了SAM,还是不能删除密码,反而会使系统启动初始化出错,从而进入死循环而不能进系统!!

  方法3——从SAM文件中找密码(前提……会使用DOS基本命令就行)

  在系统启动前,插入启动盘,进入:C:WINNTSystem3Config 用COPY命令将SAM文件复制到软盘上。拿到另一台机子读取。这里需要的工具是LC4,运行LC4,打开并新建一个任务,然后依次击“IMPORT→Import from SAM file”,打开已待破解的SAM文件,此时LC4会自动分析此文件,并显示出文件中的用户名;之后点击“Session→Begin Audit”,即可开始破解密码。如果密码不是很复杂的话,很短的时间内就会得到结果。

  不过,如果密码比较复杂的话,需要时间会很长,这时我们就需要用下面的方法了。

  方法4——用其他SAM文件覆盖(前提是你可以得到另外一台电脑的SAM文件和它的密码……个人觉得是最为可行的办法)

  1——如上所说,SAM文件保存着登录名以及口令,那么我们只要替换SAM文件就是替换登录名以及口令了。不过,这个替换用的SAM文件的“产地”硬盘分区格式要和你的系统一样(看是FAT32还是NTFS,你自己确认)。最好这个“产地”的系统没有设密码,安全方面设置没动过(实际上很大部分的个人电脑都是这样),当然,比较保险的方式是把XP的[Win NTSystem 32Config]下的所有文件覆盖到[C:Win NTSystem 32Config]目录中(假设你的XP安装在默认分区C:),

  2——如果得不到别人的帮助(我是说“万一”),你可以在别的分区上在安装一个XP系统,硬盘分区格式要和原来的一样,并且请你注意一定不要和原来的XP安装在同一分区!在开始之前,一定要事先备份引导区MBR,备份MBR的方法有很多,使用工具软件,如杀毒软件KV3000等。装完后用Administrator登陆,现在你对原来的XP就有绝对的写权限了,你可以把原来的SAM考下来,用10PHTCRACK得到原来的密码。也可以把新安装的XP的Win NTSystem 32Config下的所有文件覆盖到C:Win NTSystem 32Config目录中(架设原来的XP安装在这里),然后用KV3000恢复以前悲愤的主引导区MBR,现在你就可以用Administrator身份登陆XP了。

  [2号方案我自己都觉得麻烦,还是1号:叫别人帮忙比较好……]

  【另外,据说C:windows epair 目录下的SAM是原始版本的,可以用它来覆盖 system32下的这个 SAM,这样就可以删除现在的密码,而恢复到刚开始安装系统时的密码了。如果这个密码为空,岂不是…… 】

  方法5——使用Win 2000安装光盘引导修复系统(前提……很明显吧?就是你要有一张Win 2000安装光盘)

  使用Win 2000安装光盘启动电脑,在Wndows2000安装选择界面选择修复Windows 2000(按R键);,然后选择使用故障控制台修复(按C键),系统会扫描现有的Window2000/XP版本。一般只有一个操作系统,所以只列出了一个登录选择(l:C:Windows)。从键盘上按l,然后回车,这个时候,Window XP并没有要求输人管理员密码,而是直接登录进入了故障恢复控制台模式(如果使用的是Windows XP安装光盘启动的,那是要求输人管理员密码的。这里指的管理员是指系统内建的Administraor账户)熟悉Windows的朋友都知道,故障恢复控制台里面可以进行任何系统级别的操作,例如:复制、移动、删除文件,启动、停止服务,甚至格式化、重新分区等破坏性操作。

  测试使用光盘:集成SP3的Windows 2000 Proessional 简体中文版。

  测试通过的系统:Windows XP Proessional,打SPI补丁的Windows XP (FAT32和NTFS文件系统都一样)

  [需要注意的是,由于各种原因,市面上的一些Windows 2000安装光盘不能够显现故障控制台登录选项,所以也无法利用这个漏洞。同时,由于故障控制台模式本身的限制,也无法从网络上利用这个漏洞,换句话说,这个漏洞仅限于单机。]

  方法6——利用NET命令(有两个必要前提才行:按装WINDOWS XP的分区必须采用FAT 32文件小系统,用户名中没有汉字。)

  我们知道在Windows XP中提供了“net user”命令,该命令可以添加、修改用户账户信息,其语法格式为:

  net user [UserName [Password   *] [options]] [/domain]

  net user [UserName {Password   *} /add [options] [/domain]

  net user [UserName [/delete] [/domain]]

  每个参数的具体含义在Windows XP帮助中已做了详细的说明,在此笔者就不多阐述了。好了,我们现在以恢复本地用户“zhangbq”口令为例,来说明解决忘记登录密码的步骤:

  1、重新启动计算机,在启动画面出现后马上按下F8键,选择“带命令行的安全模式”。

  2、运行过程结束时,系统列出了系统超级用户“administrator”和本地用户“zhangbq”的选择菜单,鼠标单击“administrator”,进入命令行模式。

  3、键入命令:“net user zhangbq 123456 /add”,强制将“zhangbq”用户的口令更改为“123456”。若想在此添加一新用户(如:用户名为abcdef,口令为123456)的话,请键入“net user abcdef 123456 /add”,添加后可用“net localgroup administrators abcdef /add”命令将用户提升为系统管理组“administrators”的用户,并使其具有超级权限。

  4、重新启动计算机,选择正常模式下运行,就可以用更改后的口令“123456”登录“zhangbq”用户了。另外,zhangbq 进入 登入後在〔控制台〕→〔使用者帐户〕→选忘记密码的用户,然後选〔移除密码〕後〔等出〕 在登入画面中选原来的用户便可不需密码情况下等入 (因已移除了) 删除刚才新增的用户,在〔控制台〕→〔使用者帐户〕→选〔alanhkg888〕,然後选〔移除帐户〕便可

  [但是有人提出:在实验后得知——在安全模式命令符下新建的用户不能进入正常模式(此结论暂不确认)]

  方法7——用破解密码软件(前提是你要有标准的系统安装光盘——不是那种“集成”多个系统的D版盘)

  1——使用PASSWARE KIT 5.0中的Windows KEY 5.0,用于恢复系统管理员的密码,运行后生成3个文件:TXTSETUP.OEM、WINKEY.SYS和WINKEY.INF,3个文件共50KB。把这3个文件放在任何软盘中,然后使用XP安装光盘启动电脑,启动过程中按F6键让系统采用第三方驱动程序。此时,正是我们切入的最好时机,放入该软盘就会自动跳到Windows KEY的界面。他会强行把ADMINISTRATOR的密码换成12345,如此一来何愁大事不成?嗬嗬!当你重新启动以后,你会被要求再次修改你的密码。

  2——使用OFFICE NT PASSWORD & REGISTRY EDITOR.用该软件可以制作LINUX启动盘,这个启动盘可以访问NTFS文件系统,因此可以很好地支持Windows 2000/XP。使用该软盘中的一个运行在LINUX下的工具NTPASSWD就可以解决问题,并且可以读取注册表并重写账号。使用方法很简单,只需根据其启动后的提示一步一步做就可以了。在此,建议你使用快速模式,这样会列出用户供你选择修改那个用户密码。默认选择ADMIN组用户,自动找到把ADMINISTRATOR的名字换掉的用户,十分方便。

  3——ERD.Commander2003为Windows的管理员和最终用户,面对随时可能崩溃的系统,可能每人都会有自己的一套工具,用来挽救数据和修复系统。ERD Commander这可以算是Winternals Administrators Pak工具中最强大的组件了,其中一个引人注目的功能就是修改密码,Windows NT/2000/XP/2003 系统中任何一个用户的密码都可以在不知道原先密码的情况下被ERD修改掉。

  方法8——修改屏幕保护程序(前提是你有设置屏保)

  使用NTFSDOS这个可以从DOS下写NTFS分区的工具。用该软件制作一个DOS启动盘,然后到C:Win NTSystem 32下将屏幕保护程序Logon.Scr改名,接着拷贝Command.com到C:Win NTSystem 32下(WIN2000下可以用CMD.EXE),并将该文件改名为Logon.Scr。这样启动机器15分钟以后,本该出现的屏幕保护现在变成了命令行模式,而且是具有ADMINISTRATOR权限的,通过他就可以修改密码或者添加新的管理员账号了。改完以后不要忘了把屏幕保护程序的名字改回去。

  方法9——使用启动脚本(前提……会使用DOS基本命令就行)

  Windows XP启动脚本(startup scripts)是计算机在登录屏幕出现之前运行的批处理文件,它的功能类似于Windows 9×和DOS中的自动执行批处理文件autoexec.bat。利用这个特性,可以编写一个批处理文件重新设置用户密码,并将它加入启动脚本中,这样就达到了目的。以下是具体步骤(假设系统目录为C:Windows)。

  1.使用Windows98启动盘启动电脑。在DOS下新建一个文件叫a.bat,内容只需要一条“net user”命令即可:“Net user rwd 12345678”。这条命令的意思是将用户rwd的密码设置为“12345678”(有关Net命令的用法,可参考Windows帮助)。然后将文件a.bat保存到“C:windowssystem32GroupPolicyMachineScriptsStartup”下。

  2.编写一个启动/关机脚本配置文件scripts.ini,这个文件名是固定的,不能改变。内容如下:

  [Startup]

  0CmdLine=a.bat

  0Parameters=

  3.将文件scripts.ini保存到“C:winntsystem32GroupPolicyMachineScripts”下。scripts.ini保存着计算机启动/关机脚本的设置数据,文件内容通常包含两个数据段:[Startup]和[Shutdown]。[Startup]数据段下是启动脚本配置,[Shutdown]数据段下是关机脚本配置。每个脚本条目被分成脚本名和脚本参数两部分存储,脚本名保存在XCmdLine关键字下,参数保存在XParameters关键字下,这里的X表示从0开始的脚本序号,以区别多个脚本条目和标志各脚本条目的运行顺序。

  4.取出Windows 98启动盘,重新启动电脑,等待启动脚本运行。启动脚本运行结束后用户rwd的密码就被恢复为“12345678”。

  5.登录成功后删除上述步骤建立的两个文件。

  [实际上你可以借用另一台电脑用“记事本”编写a.bat和scripts.ini,再用软盘通过DOS复制到自己的电脑上]

  说明:

  以上脚本使用的是FAT32文件系统,如果使用NTFS文件系统,可以将这块硬盘以从盘模式挂接到其它能识别NTFS文件系统(如Windows 2000或Windows XP)的计算机上进行上述操作。本方法可以恢复管理员(Administrator)的密码。对Windows2000系统中本地计算机用户和域用户的密码恢复同样有效。

  为什么使用Google扫描安全漏洞

  如果你正在执行信息安全评估――渗入测试、漏洞评估,或者范围更广的黑客测试――你就不能没有一个相应的测试工具。虽然对于一个网站来说,此类工具很难找,但Google(是的,www.google.com)还是一个你可以使用的,能够测试Windows系统安全漏洞的最热工具中的其中之一。假设它的功能和力量能够被用来攻击你,那么在对你的恶意攻击之前,这是一个让你知道自己系统漏洞,并采取相应保护措施的好工具。

  除了能够用Google做你能做的事情之外,它的最大优势之一就是不存在价格上的问题。Google被认为是穷人的安全评估工具,或者是为那些很少,甚至没有IT预算的安全管理员(即几乎所有的人)提供的工具。我个人是商业安全评估工具的大力提倡者,它们有助于提供更加详尽的测试项目、优良的报告能力和其它可以使你的评估工作更加容易的工具。然而,“花多少钱办多少事”,有时和它们并不相符。Google能够提供像黑客一样的眼睛,做你想像不到的事情,或者能够做任何安全测试工具(包括商业软件、免费软件或开源软件)能够做的事情,而这一切都是免费的!

  和许多外部测试工具一样,Google能够看到当前你为网络世界提供的服务。并且,它能够搜集、缓存、寻找和挖掘那些对你来说并不是很新的信息,或者在你不知道的情况下放上互联网的内容。在执行安全评估查询方面,你可以有几个选择,在Google的首页,高级搜索页面,甚至使用Google API写一个你自己的Web应用程序。

  当在你的系统上执行信息安全测试时,你最想做的就使像黑客一样进行查看,这也是Google最为擅长的。这里是一些进行黑客测试时Google能够找到的信息的例子:

  1.信用卡信息(credit card information)、社会安全号(social security number)和其它公众可以通过Web应用程序和数据库访问的机密信息。

  2.网络摄像头。

  3.文字处理文档、电子表格和演示文稿文件。

  4.Outlook Web Access相关的文件。

  5.默认的(通常是不安全的)IIS文件和自定义的ISS错误信息。

  6.本想隐藏的Web登录页面。

  7.进行不属于你的网络的主机欺诈。

  8.包含敏感信息的新闻组帖子。

  以上述的最后一个为例,当在Google Groups中执行一个基本的查询时,我看到了一个我认识的电信供应商的支持组信息,它是由供应商的网络管理员发表的。那个帖子泄漏了供应商内部网络的详细配置,包括网络布局、内网IP地址和主机名。它显露出的这么多信息给我的第一感觉是,我不应该信息那个公司,并将自己企业的敏感信息交给他们。我使用公司的名称和几个关键词,执行简单的搜索就找到了这些信息,若是使用Google的高级搜索,还不知道能够找到多少信息呢!

  在今天高价漏洞评估工具的世界里,Google是一阵清新的空气,它的安全测试查询是无敌的!作为一个安全漏洞检测的顶级人士,你不仅需要像黑客一样进行工作,还需要有创新的测试方法,Google无疑就是这样一款工具,他允许你进行这样的工作。

  在不久的将来,我将向你讲述使用真实的Google查询测试你的Windows系统的安全,这将帮助你确定自己的Windows系统是否足够健壮。

  用Google工具自动执行黑客测试

  已经有多种Google工具能够自动执行黑客测试,或者增强Google黑客测试的能力,它们包括:

  ·Johnny Long的Google Hacking Database (GHDB):http://johnny.ihackstuff.com/index.php?module=prodreviews,提供许多查询样例,你可以调节这些样例,将其用于你自己的站点或域名上。

  ·Foundstone公司的SiteDigger(http://www.foundstone.com/resources/proddesc/sitedigger.htm),它利用Foundstone自己个性化的Google查询,像Johnny Long的Google Hacking Database (GHDB)一样执行自动搜索。

  注意:Google每天最多只允许运行1,000条查询,这看起来挺多,但对于此类工具来说,很快就能够执行完毕。

  ·Johnny Long的Gooscan for Linux(http://johnny.ihackstuff.com/modules.php?op=modload&name=Downloads&file=indexreq=viewdownload&cid=5),它能够用来在Linux下执行命令行方式的Google查询。

  ·Google Toolbar for Internet Explorer允许你不进入Google的首页www.google.com就能够在IE浏览器中直接输入关键词进行简单的查询。如果你是IE的反对者,还可以使用能够在Netscape或者Mozilla Firefox下执行的开放源码的Googlebar(http://googlebar.mozdev.org/)。

  ·GooDelete(http://www.dirfile.com/goodelete_history.htm)能够清理那些你不想留下的,使用Google Toolbar查询留下的,可能包含敏感信息的缓存。

  另外,如果你非常热心于Google黑客行为,你的书橱中就不能少了Johnny Long撰写的,具有很高评价的《Google Hacking for Penetration Testers.》(_ihackstuff-20/102-5005443-2664941?v=glance&s=books">http://www.amazon.com/exec/obidos/tg/detail/-/1931836361/ref=ase_ihackstuff-20/102-5005443-2664941?v=glance&s=books)这本书。

  用Google查询人工执行黑客测试

  在上一个技巧列出的自动查询工具之外,你可能还想执行自主的人工Google查询,这里是一些我在服务器上运行过的测试,它们可以作为你的开始。

  注意:事实上,你能够使用Google进行的这些查询是非常非常少的一部分,你只需将你的想像力与前述的工具结合即可,它们对你要进行的查询的数量没有限制。

  ·site:你的主机或者域名 需要找的关键字

  这将测试搜索一个特定Internet主机或域名下的任意关键字,你可以使用如SSN、 confidential、finance、student等众多关键字。

  ·filetype:想要找的文件扩展名 site:你的主机或者域名

  这个测试将搜索你系统中的特定文件,你可以输入任意文件扩展名,比如doc、pdf、ppt、db、dbf等,只要是你能够想像到的就行。

  除非你能够确定你的信息已经泄漏到了其它网站,否则就一直使用“site:”操作符来限定你的搜索结果。使用“link:”操作符则能够搜索连接到个页面上的超链接。

  如果Google返回了查询结果,但其中的链接已经成为死链,你可以点击搜索结果下面的“快照”链接进行搜索和查找。这将搜索Google的缓存,你的信息可能有存在那里的机会。同样,确定在Google Groups(网上论坛)搜索敏感信息,我曾经利用这种方法,在这里搜索到很多有用的信息。你还可以查看Interesting Google Queries(http://artkast.yak.net/81)这个网页,找到针对Microsoft的特殊Google搜索技巧。

  四个步骤保护Windows数据远离Google黑客

  使用适当的对策,可以帮助你将高度机密信息远离Google,不能够被Google黑客搜索到。这里有四个步骤,你可以尝试做一下:

  1.巩固你的服务器,并将其与外部环境隔离

  有一个很不幸的事实是,许多关键服务器仍然完全暴露在Internet上,现在请收紧你服务器的存取控制,并将其放在防火墙之后。

  2.设置robots.txt文件,禁止Google索引你的网页

  你能够通过设置“googlebot”的“User-agent:”参数的方法保护网络服务器的文件和目录免受Google索引,方法是在“Disallow:”部分列出你想保密的信息。

  或者,如果你想所有的Web机器人都不访问你的网站和网页,就请将“User-agent:”参数设置为“*”,不过记住,怀有恶意的在网上到处闲逛的人能够从你的Web Server上得到此文件,并且看到你不想被别人看到的是哪些信息。如果这看起来像互联网的弱点,那么它就是。你可以不用robots.txt文件,但你应该允许机器人只能索引那些具体的公开页面,或者通过输入“Disallow /”禁止它们索引任何以根目录开始的信息。

  请访问The Web Robots Pages(http://www.robotstxt.org/wc/robots.html)获取如何配置你的robots.txt文件和如何执行更多反机器人欺骗的信息。Google同样有一个FAQ on Googlebot’s operation(http://www.google.com/bot.html)。

  3.将高度机密的信息从公众服务器上去除

  制定一项组织策略用来保护高度机密的信息(例如密码、机密文件等)远离公众可以访问的服务器。否则,使用任何可能的存取控制措施来保护它们,并且确保这些策略能够被强制执行,并且管理那些违规者。

  4.保证你的服务器是安全的

  为了维护服务器安全,请使用我在这一系列技巧中讨论过的Google测试工具和Google查询对其进行黑客测试。

  我高度推荐使用自动化测试工具,譬如SiteDigger和Gooscan进行黑客测试,手工执行多个查询的方式不仅缓慢枯燥,还不易于管理。

  记住,这些测试只是通过Google进行的挖掘测试,它们并不能代表所有的黑客和Internet安全,这些也不是测试所有系统漏洞的最好工具。作为替代,你必须使用“多层”测试手段:同时使用Google和其它免费的、开源的,以及――据我看来,最具有综合性和可靠性的――商业性的工具进行测试,这些商业性的工具我推荐的有SPI Dynamics公司的WebInspect(应用于Web应用程序,http://www.spidynamics.com/)、Application Security公司的AppDetective(用于Web数据库,http://www.appsecinc.com/)和Qualys公司的QualysGuard(用于操作系统和网络漏洞,http://www.qualys.com/)。

  如果模拟黑客、渗入测试和普通的网络安全审计是你工作职责的一部分,这些Google黑客技术和相应的工具将成为你需要的安全工具箱中的一部分。为了安全的缘故,请现在就开始执行它,并且以后也经常执行。

  关于作者:Kevin Beaver是一位独立的信息安全顾问、作者,也是位于亚特兰大的Principle Logic, LLC公司的发言人,他专门为那些需要严格安全保护,或者突发安全事件寻求解决方法的公司提供信息安全研究服务。他是四本有关信息安全的书的作者或共同作者,其中包含获得巨大成功的《Hacking for Dummies》(_1_2/002-6195114-4480811?v=glance&s=books">http://www.amazon.com/exec/obidos/tg/detail/-/076455784X/qid=1086746862/sr=1-2/ref=sr_1_2/002-6195114-4480811?v=glance&s=books)和即将出版的《Hacking Wireless Networks for Dummies》(http://www.wiley.com/WileyCDA/WileyTitle/productCd-0764597302.html)。这些书都由Wiley Publishing出版集团策划发行。你可以通过[email protected]联系Kevin Beaver,这是他的个人邮箱。也可以通过http://searchwindowssecurity.techtarget.com/ateAnswers/0,289620,sid45_tax297883,00.html,直接向他提问有关黑客方面的问题

    大家一定使用过 phpmyadmin 里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题:

  1 数据库超过一定尺寸,比如6M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。

  2 导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用 mysql等应用程序导入了。 我的数据库已经超过10M,所以必须解决这个问题。我的思路:

  导出: 用phpmyadmin 保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
  导入: 用phpmyadmin 恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!

  导出程序如下:调用方法为 ****.php?table=tablename
  这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!

以下为引用的内容:
< ?
if($table=="")exit();
mysql_connect("localhost","name","password");
mysql_select_db("database");
$result = mysql_query("select * from $table");
if(mysql_num_rows($result) < = 0) exit();
echo "开始转换数据到文本…
";
$handle = fopen("$table.txt","w");
$numfields = mysql_num_fields($result);
fputs($handle,$numfields."
");
for($k=0;$k< mysql_num_rows($result);$k++)
{
$msg = mysql_fetch_row($result);
for($i=0;$i< $numfields;$i++)
{
$msg[$i] = str_replace("
","&&php2000mysqlreturn&&",$msg[$i]);
$msg[$i] = str_replace("
" ,"&&php2000mysqlreturn&&",$msg[$i]);
fputs($handle,$msg[$i]."
");
}
fputs($handle,"——- php2000 dump data program V1.0 for MySQL ——–
");
}
fclose($handle);
echo "ok";
?>

  导入的程序如下:用法同上面!

以下为引用的内容:
< ?
if($table=="")exit();
mysql_connect("localhost","name","password");
mysql_select_db("database");
$message = file("$table.txt");
echo $numfields = chop($message[0]);
for($k=1;$k< count($message);$k+=($numfields+1))
{
$value="";
for ($i=$k;$i< ($k+$numfields-1);$i++)
{
$tmp = str_replace("&&php2000mysqlreturn&&","
",chop($message[$i]));
$value .= "‘".addslashes($tmp)."‘,";
}
$tmp = str_replace("&&php2000mysqlreturn&&","
",chop($message[$k+$numfields-1]));
$value .= "‘".$tmp."‘";
$query = "insert into $table values (".$value.")";
echo mysql_error();
mysql_query($query);
echo $k." ";
}
echo "ok";
?>

  使用方法和可能的问题!
  1 导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!
  2 导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!

转自:http://www.weste.net/2006/7-14/16243358863.html

    SQL Server连接中的常见错误:

  一、"SQL Server 不存在或访问被拒绝"

  这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多。

  一般说来,有以下几种可能性:

  1、SQL Server名称或IP地址拼写有误

  2、服务器端网络配置有误

  3、客户端网络配置有误

  要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因。

  首先,检查网络物理连接

  ping <服务器IP地址/服务器名称>

  如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,HUB,路由器等。

  还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server。防火墙软件可能会屏蔽对 ping,telnet 等的响应

  因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。

  如果ping <服务器IP地址> 成功而,ping <服务器名称> 失败

  则说明名字解析有问题,这时候要检查 DNS 服务是否正常。

  有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,

  具体的方法是:

  1、使用记事本打开HOSTS文件(一般情况下位于C:WINNTsystem32driversetc)。

  添加一条IP地址与服务器名称的对应记录,如:

  172.168.10.24 myserver

  2、或在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明。

   其次,使用 telnet 命令检查SQL Server服务器工作状态

  telnet <服务器IP地址> 1433

  如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接

  如果命令返回"无法打开连接"的错误信息,则说明服务器端没有启动 SQL Server 服务,

  也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听。

  接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道。是否启用了 TCP/IP 协议等等

  可以利用 SQL Server 自带的服务器网络使用工具来进行检查。

  点击:程序 — Microsoft SQL Server — 服务器网络使用工具

  打开该工具后,在"常规"中可以看到服务器启用了哪些协议。

  一般而言,我们启用命名管道以及 TCP/IP 协议。

  点中 TCP/IP 协议,选择"属性",我们可以来检查 SQK Server 服务默认端口的设置

  一般而言,我们使用 SQL Server 默认的1433端口。如果选中"隐藏服务器",则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接。

   接下来我们要到客户端检查客户端的网络配置

  我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,

  所不同的是这次是在客户端来运行这个工具。

  点击:程序 — Microsoft SQL Server — 客户端网络使用工具

打开该工具后,在"常规"项中,可以看到客户端启用了哪些协议。

  一般而言,我们同样需要启用命名管道以及 TCP/IP 协议。

  点击 TCP/IP 协议,选择"属性",可以检查客户端默认连接端口的设置,该端口必须与服务器一致。

  单击"别名"选项卡,还可以为服务器配置别名。服务器的别名是用来连接的名称,

  连接参数中的服务器是真正的服务器名称,两者可以相同或不同。别名的设置与使用HOSTS文件有相似之处。

  通过以上几个方面的检查,基本上可以排除第一种错误。  

    二、"无法连接到服务器,用户xxx登陆失败"

  该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,

  因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:

  1、在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server

  2、展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡

  3、在"身份验证"下,选择"SQL Server和 Windows "。

  4、重新启动SQL Server服务。

  在以上解决方法中,如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败,

  那就通过修改注册表来解决此问题:

  1、点击"开始"-"运行",输入regedit,回车进入注册表编辑器

  2、依次展开注册表项,浏览到以下注册表键:

  [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer]

  3、在屏幕右方找到名称"LoginMode",双击编辑双字节值

  4、将原值从1改为2,点击"确定"

  5、关闭注册表编辑器

  6、重新启动SQL Server服务。

  此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,

  但是仍然无法使用Windows身份验证模式来连接SQL Server。

  这是因为在 SQL Server 中有两个缺省的登录帐户:

  BUILTINAdministrators

  <机器名>Administrator 被删除。

  要恢复这两个帐户,可以使用以下的方法:

  1、打开企业管理器,展开服务器组,然后展开服务器

  2、展开"安全性",右击"登录",然后单击"新建登录"

  3、在"名称"框中,输入 BUILTINAdministrators

  4、在"服务器角色"选项卡中,选择"System Administrators"

  5、点击"确定"退出

  6、使用同样方法添加 <机器名>Administrator 登录。

  说明:

  以下注册表键:
  HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode

  的值决定了SQL Server将采取何种身份验证模式。

  1、表示使用"Windows 身份验证"模式

  2、表示使用混合模式(Windows 身份验证和 SQL Server 身份验证)。

    三、提示连接超时

  如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,

  不过是由于连接的时间大于允许的时间而导致出错。

  这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误。有些情况下,由于局域网的网络问题,也会导致这样的错误。

  要解决这样的错误,可以修改客户端的连接超时设置。

  默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因)。

  具体步骤为:

  企业管理器中的设置:

  1、在企业管理器中,选择菜单上的"工具",再选择"选项"

  2、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡

  3、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20。

  查询分析器中的设置:

  工具 — 选项 — 连接 — 将登录超时设置为一个较大的数字

  连接超时改为0

  1、先保证ping通

  2、在dos下写入telnet ip 1433不会报错

  3、用ip连如企业管理器:

  企业管理器–>右键SQlserver组–>新建sqlserver注册–>下一步–>写入远程实例名 (IP,机器名)–>下一步–>选Sqlserver登陆–>下一步–>写入登陆名与密码(sa,pass)– >下一步–>下一步–>完成

  4、如果还不行:

  sqlserver服务器–>开始菜单–>SQLserver–>服务器网络实用工具–>启用 WinSock代理–>代理地址:(sqlserver服务器IP)–>代理端口–>1433–>OK了

  5、如果还不行:

  sqlserver客户端–>开始菜单–>SQLserver–>客户端网络实用工具–>别名–>添加–>写入别名如"大力"–>"网络库"选tcp/ip–>服务器名称写入远程ip或实例名–>OK了

  一个网络系统的安全程度,在很大程度上取决于管理者的素质,以及管理者所采取的安全措施的力度。在对系统进行配置的同时,要把安全性问题放在重要的位置。

  SCO UNIX,作为一个技术成熟的商用网络操作系统,广泛地应用在金融、保险、邮电等行业,其自身内建了丰富的网络功能,具有良好的稳定性和安全性。但是,如果用户没有对UNIX系统进行正确的设置,就会给入侵者以可乘之机。因此在网络安全管理上,不仅要采用必要的网络安全设备,如:防火墙等,还要在操作系统的层面上进行合理规划、配置,避免因管理上的漏洞而给应用系统造成风险。

  下面以SCO UNIX Openserver V5.0.5为例,对操作系统级的网络安全设置提几点看法,供大家参考。

  合理设置系统安全级别

  SCO UNIX提供了四个安全级别,分别是Low、Traditional、Improved和High级,系统缺省为Traditional级;Improved级达到美国国防部的C2级安全标准;High级则高于C2级。用户可以根据自己系统的重要性及客户数的多少,设置适合自己需要的系统安全级别,具体设置步骤是:scoadmin→system→security→security profile manager。

  合理设置用户

  建立用户时,一定要考虑该用户属于哪一组,不能随便选用系统缺省的group组。如果需要,可以新增一个用户组并确定同组成员,在该用户的主目录下,新建文件的存取权限是由该用户的配置文件.profile中的umask的值决定。umask的值取决于系统安全级, Tradition安全级的umask的值为022,它的权限类型如下:

  文件权限: – r w – r – – r – –

  目录权限: d r w x r – x r – x

  此外,还要限制用户不成功登录的次数,避免入侵者用猜测用户口令的方法尝试登录。为账户设置登录限制的步骤是:Scoadmin–〉Account Manager–〉选账户–〉User–〉Login Controls–〉添入新的不成功登录的次数。

  指定主控台及终端登录的限制

  如果你希望root用户只能在某一个终端(或虚屏)上登录,那么就要对主控台进行指定,例如:指定root用户只能在主机第一屏tty01上登录,这样可避免从网络远程攻击超级用户root。设置方法是在/etc/default/login文件增加一行:CONSOLE=/dev/tty01。

  注意:设置主控台时,在主机运行中设置后就生效,不需要重启主机。

  如果你的终端是通过Modem异步拨号或长线驱动器异步串口接入UNIX主机,你就要考虑设置某终端不成功登录的次数,超过该次数后,锁定此终端。设置方法为:scoadmin→Sysrem→Terminal Manager→Examine→选终端,再设置某终端不成功登录的次数。如果某终端被锁定后,可用ttyunlock〈终端号〉进行解锁。也可用ttylock〈终端号〉直接加锁。

  文件及目录的权限管理

  有时我们为了方便使用而将许多目录和文件权限设为777或666,但是这样却为黑客攻击提供了方便。因此,必须仔细分配应用程序、数据和相应目录的权限。发现目录和文件的权限不适当,应及时用chmod命令修正。

  口令保护的设置

  口令一般不要少于8个字符,口令的组成应以无规则的大小写字母、数字和符号相结合,绝对避免用英语单词或词组等设置口令,而且应该养成定期更换各用户口令的习惯。通过编辑/etc/default/passwd文件,可以强制设定最小口令长度、两次口令修改之间的最短、最长时间。另外,口令的保护还涉及到对/etc/passwd和/etc/shadow文件的保护,必须做到只有系统管理员才能访问这两个文件。

  合理设置等价主机

  设置等价主机可以方便用户操作,但要严防未经授权非法进入系统。所以必须要管理/etc/hosts.equiv、.rhosts和.netrc这3个文件。其中,/etc /hosts.equiv列出了允许执行rsh、rcp等远程命令的主机名字;.rhosts在用户目录内指定了远程用户的名字,其远程用户使用本地用户账户执行rcp、rlogin和rsh等命令时不必提供口令;.netrc提供了ftp和rexec命令所需的信息,可自动连接主机而不必提供口令,该文件也放在用户本地目录中。由于这3个文件的设置都允许一些命令不必提供口令便可访问主机,因此必须严格限制这3个文件的设置。在.rhosts中尽量不用“+ +”,因为它可以使任何主机的用户不必提供口令而直接执行rcp、rlogin和rsh等命令。

  合理配置/etc/inetd.conf文件

  UNIX系统启动时运行inetd进程,对大部分网络连接进行监听,并且根据不同的申请启动相应进程。其中ftp、telnet、rcmd、rlogin和finger等都由inetd来启动对应的服务进程。因此,从系统安全角度出发,我们应该合理地设置/etc/inetd.conf文件,将不必要的服务关闭。关闭的方法是在文件相应行首插入“#”字符,并执行下列命令以使配置后的命令立即生效。

  #ps-ef   grep inetd   grep -v grep

  #kill -HUP 〈 inetd-PID 〉

  合理设置/etc/ftpusers文件

  在/etc/ftpuser文件里列出了可用FTP协议进行文件传输的用户,为了防止不信任用户传输敏感文件,必须合理规划该文件。在对安全要求较高的系统中,不允许ftp访问root和UUCP,可将root和UUCP列入/etc/ftpusers中。

  合理设置网段及路由

  在主机中设置TCP/IP协议的IP地址时,应该合理设置子网掩码(netmask),把禁止访问的IP地址隔离开来。严格禁止设置缺省路由(即:default route)。建议为每一个子网或网段设置一个路由,否则其他机器就可能通过一定方式访问该主机。

  不设置UUCP

  UUCP为采用拨号用户实现网络连接提供了简单、经济的方案,但是同时也为黑客提供了入侵手段,所以必须避免利用这种模式进行网络互联。

  删除不用的软件包及协议

  在进行系统规划时,总的原则是将不需要的功能一律去掉。如通过scoadmin–〉Soft Manager去掉X Window;通过修改/etc/services文件去掉UUCP、SNMP、POP、POP2、POP3等协议。

  正确配置.profile文件

  .profile文件提供了用户登录程序和环境变量,为了防止一般用户采用中断的方法进入$符号状态,系统管理者必须屏蔽掉键盘中断功能。具体方法是在.porfile首部增加如下一行:

  trap ‘ ‘ 0 1 2 3 5 15

  创建匿名ftp

  如果你需要对外发布信息而又担心数据安全,你可以创建匿名ftp,允许任何用户使用匿名ftp,不需密码访问指定目录下的文件或子目录,不会对本机系统的安全构成威胁,因为它无法改变目录,也就无法获得本机内的其他信息。注意不要复制/etc/passwd、/etc/proup到匿名ftp的etc下,这样对安全具有潜在的威胁。

  应用用户和维护用户分开

  金融系统UNIX的用户都是最终用户,他们只需在具体的应用系统中完成某些固定的任务,一般情况下不需执行系统命令(shell),其应用程序由.profile调用,应用程序结束后就退到login状态。维护时又要用root级别的su命令进入应用用户,很不方便。可以通过修改.profile 文件,再创建一个相同id用户的方法解决。例:应用用户work有一个相同id相同主目录的用户worksh, 用户work的.profile文件最后为:

  set — `who am i`

  case $1 in

  work ) exec workmain;exit;;

  worksh ) break;;

  esac

  如果你一直利用Telnet控制网络设备,你可以考虑采用其他更安全的方式。本文告诉你如何用SSH替换Telnet。

  使用Telnet这个用来访问远程计算机的TCP/IP协议以控制你的网络设备相当于在离开某个建筑时大喊你的用户名和口令。很快地,会有人进行监听,并且他们会利用你安全意识的缺乏。

  SSH是替代Telnet和其他远程控制台管理应用程序的行业标准。SSH命令是加密的并以几种方式进行保密。

  在使用SSH的时候,一个数字证书将认证客户端(你的工作站)和服务器(你的网络设备)之间的连接,并加密受保护的口令。SSH1使用RSA加密密钥,SSH2使用数字签名算法(DSA)密钥保护连接和认证。

  加密算法包括Blowfish,数据加密标准(DES),以及三重DES(3DES)。SSH保护并且有助于防止欺骗,“中间人”攻击,以及数据包监听。

  实施SSH的第一步是验证你的设备支持SSH。请登录你的路由器或交换机,并确定你是否加载了一个支持SSH的IPSec IOS镜像。

  在我们的例子中,我们将使用Cisco IOS命令。运行下面的命令:

  Router> Show flash

  该命令显示已加载的IOS镜像名称。你可以用结果对比你的供应商的支持特性列表。

  在你验证了你的设备支持SSH之后,请确保设备拥有一个主机名和配置正确的主机域,就像下面的一样:

  Router> config terminal

  Router (config)# hostname hostname

  Router (config)# ip domain-name domainname

  在这个时候,你就可以启用路由器上的SSH服务器。要启用SSH服务器,你首先必须利用下面的命令产生一对RSA密钥:

  Router (config)# crypto key generate rsa

  在路由器上产生一对RSA密钥就会自动启用SSH。如果你删除这对RSA密钥,就会自动禁用该SSH服务器。

  实施SSH的最后一步是启用认证,授权和审计(AAA)。在你配置AAA的时候,请指定用户名和口令,会话超时时间,一个连接允许的尝试次数。像下面这样使用命令:

  Router (config)# aaa new-model

  Router (config)# username password

  Router (config)# ip ssh time-out

  Router (config)# ip ssh authentication-retries

  要验证你已经配置了SSH并且它正运行在你的路由器上,执行下面的命令:

  Router# show ip ssh

  在验证了配置之后,你就可以强制那些你在AAA配置过程中添加的用户使用SSH,而不是Telnet。你也可以在虚拟终端(vty)连接中应用SSH而实现同样的目的。这里给出一个例子:

  Router (config)# line vty 0 4

  Router (config-line)# transport input SSH

  在你关闭现存的Telnet会话之前,你需要一个SSH终端客户端程序以测试你的配置。我极力推荐PuTTY;它是免费的,而且它是一个优秀的终端软件。

  最后的想法

  当你在你的路由器和交换机上启用了SSH之后,保证你修改了所有现存的访问控制列表以允许对这些设备的连接。你现在可以向你的上级报告你已经堵上了一个巨大的安全漏洞:现在所有的网络管理会话都被加密并且被保护着。

  前言

  后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的"大力支持",使传统的后门无法在隐藏自己,任何稍微有点计算机知识的人,都知道"查端口""看进程",以便发现一些"蛛丝马迹"。所以,后门的编写者及时调整了思路,把目光放到了动态链接程序库上,也就是说,把后门做成DLL文件,然后由某一个EXE做为载体,或者使用Rundll32.exe来启动,这样就不会有进程,不开端口等特点,也就实现了进程、端口的隐藏。本文以"DLL的原理""DLL的清除""DLL的防范"为主题,并展开论述,旨在能让大家对DLL后门"快速上手",不在恐惧DLL后门。好了,进入我们的主题。

  一、DLL的原理

  1,动态链接程序库

  动态链接程序库,全称:Dynamic Link Library,简称:DLL,作用在于为应用程序提供扩展功能。应用程序想要调用DLL文件,需要跟其进行"动态链接";从编程的角度,应用程序需要知道DLL文件导出的API函数方可调用。由此可见,DLL文件本身并不可以运行,需要应用程序调用。正因为DLL文件运行时必须插入到应用程序的内存模块当中,这就说明了:DLL文件无法删除。这是由于Windows内部机制造成的:正在运行的程序不能关闭。所以,DLL后门由此而生!

  2,DLL后门原理及特点

  把一个实现了后门功能的代码写成一个DLL文件,然后插入到一个EXE文件当中,使其可以执行,这样就不需要占用进程,也就没有相对应的PID号,也就可以在任务管理器中隐藏。DLL文件本身和EXE文件相差不大,但必须使用程序(EXE)调用才能执行DLL文件。DLL文件的执行,需要EXE文件加载,但EXE想要加载DLL文件,需要知道一个DLL文件的入口函数(既DLL文件的导出函数),所以,根据DLL文件的编写标准:EXE必须执行DLL文件中的DLLMain()作为加载的条件(如同EXE的mian())。做DLL后门基本分为两种:1)把所有功能都在DLL文件中实现;2)把DLL做成一个启动文件,在需要的时候启动一个普通的EXE后门。

  常见的编写方法:

  (1),只有一个DLL文件

  这类后门很简单,只把自己做成一个DLL文件,在注册表Run键值或其他可以被系统自动加载的地方,使用Rundll32.exe来自动启动。Rundll32.exe是什么?顾名思意,"执行32位的DLL文件"。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。当然,这些Rundll32.exe执行的DLL文件是什么,我们都可以从系统自动加载的地方找到。

  现在,我来介绍一下Rundll32.exe这个文件,意思上边已经说过,功能就是以命令行的方式调用动态链接程序库。系统中还有一个Rundll.exe文件,他的意思是"执行16位的DLL文件",这里要注意一下。在来看看Rundll32.exe使用的函数原型:

  其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]

  Void CALLBACK FunctionName (

  HWND hwnd,

  HINSTANCE hinst,

  LPTSTR lpCmdLine,

  Int nCmdShow

  );

  DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。

  (2),替换系统中的DLL文件

  这类后门就比上边的先进了一些,它把实现了后门功能的代码做成一个和系统匹配的DLL文件,并把原来的DLL文件改名。遇到应用程序请求原来的DLL文件时, DLL后门就启一个转发的作用,把"参数"传递给原来的DLL文件;如果遇到特殊的请求时(比如客户端),DLL后门就开始,启动并运行了。对于这类后门,把所有操作都在DLL文件中实现最为安全,但需要的编程知识也非常多,也非常不容易编写。所以,这类后门一般都是把DLL文件做成一个"启动"文件,在遇到特殊的情况下(比如客户端的请求),就启动一个普通的EXE后门;在客户端结束连接之后,把EXE后门停止,然后DLL文件进入"休息"状态,在下次客户端连接之前,都不会启动。但随着微软的"数字签名"和"文件恢复"的功能出台,这种后门已经逐步衰落。

  提示:

  在WINNTsystem32目录下,有一个dllcache文件夹,里边存放着众多DLL文件(也包括一些重要的EXE文件),在DLL文件被非法修改之后,系统就从这里来恢复被修改的DLL文件。如果要修改某个DLL文件,首先应该把dllcache目录下的同名DLL文件删除或更名,否则系统会自动恢复。

  (3),动态嵌入式

  这才是DLL后门最常用的方法。其意义是将DLL文件嵌入到正在运行的系统进程当中。在Windows系统中,每个进程都有自己的私有内存空间,但还是有种种方法来进入其进程的私有内存空间,来实现动态嵌入式。由于系统的关键进程是不能终止的,所以这类后门非常隐蔽,查杀也非常困难。常见的动态嵌入式有:"挂接API""全局钩子(HOOK)""远程线程"等。

  远程线程技术指的是通过在一个进程中创建远程线程的方法来进入那个进程的内存地址空间。当EXE载体(或Rundll32.exe)在那个被插入的进程里创建了远程线程,并命令它执行某个DLL文件时,我们的DLL后门就挂上去执行了,这里不会产生新的进程,要想让DLL后门停止,只有让这个链接DLL后门的进程终止。但如果和某些系统的关键进程链接,那就不能终止了,如果你终止了系统进程,那Windows也随即被终止!!!

  3,DLL后门的启动特性

  启动DLL后门的载体EXE是不可缺少的,也是非常重要的,它被称为:Loader。如果没有Loader,那我们的DLL后门如何启动呢?因此,一个好的DLL后门会尽力保护自己的Loader不被查杀。Loader的方式有很多,可以是为我们的DLL后门而专门编写的一个EXE文件;也可以是系统自带的Rundll32.exe,即使停止了Rundll32.exe,DLL后门的主体还是存在的。3721网络实名就是一个例子,虽然它并不是"真正"的后门。  二、DLL的清除

  本节以三款比较有名的DLL后门例,分别为"SvchostDLL.dll""BITS.dll""QoServer.dll"。详细讲解其手工清除方法。希望大家在看过这三款DLL后门的清除方法之后,能够举一反三,灵活运用,在不惧怕DLL后门。其实,手工清除DLL后门还是比较简单的,无非就是在注册表中做文章。具体怎么做,请看下文。

  1,PortLess BackDoor

  这是一款功能非常强大的DLL后门程序,除了可以获得Local System权限的Shell之外,还支持如"检测克隆帐户""安装终端服务"等一系列功能(具体可以参见程序帮助),适用Windows2000/xp/2003等系统。程序使用svchost.exe来启动,平常不开端口,可以进行反向连接(最大的特点哦),对于有防火墙的主机来说,这个功能在好不过了。

  在介绍清除方法之前,我们先来简单的介绍一下svchost.exe这个系统的关键服务:

  Svchost只是做为服务的宿主,本身并不实现什么功能,如果需要使用Svchost来启动服务,则某个服务是以DLL形式实现的,该DLL的载体Loader指向svchost,所以,在启动服务的时候由svchost调用该服务的DLL来实现启动的目的。使用svchost启动某个服务的DLL文件是由注册表中的参数来决定的,在需要启动服务的下边都有一个Parameters子键,其中的ServiceDll表明该服务由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处理服务任务提供支持。

  呵呵!看了上边的理论,是不是有点蒙(我都快睡着了),别着急,我们来看看具体的内容。HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRpcSs下的Parameters子键,其键值为%SystemRoot%system32
pcss.dll。这就说明:启动RpcSs服务时。Svchost调用WINNTsystem32目录下的rpcss.dll。

  注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost,里边存放着Svchost启动的组和组内的各个服务,其中netsvcs组的服务最多。要使用Svchost启动某个服务,则该服务名就会出现在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost下。这里有四种方法来实现:

  1, 添加一个新的组,在组里添加服务名

  2, 在现有组里添加服务名

  3, 直接使用现有组里的一个服务名,但是本机没有安装的服务

  4, 修改现有组里的现有服务,把它的ServiceDll指向自己的DLL后门

  我测试的PortLess BackDoor使用的第三种方法。

  好了,我想大家看完了上边的原理,一定可以想到我们清除PortLess BackDoor的方法了,对,就是在注册表的Svchost键下做文章。好,我们现在开始。

  注:由于本文只是介绍清除方法,使用方法在此略过。

  后门的Loader把SvchostDLL.dll插入Svchost进程当中,所以,我们先打开Windows优化大师中的Windows进程管理2.5,查看Svchost进程中的模块信息,SvchostDLL.dll已经插入到Svchost进程中了,在根据"直接使用现有组里的一个服务名,但是本机没有安装的服务"的提示,我们可以断定,在"管理工具"—"服务"中会有一项新的服务。此服务名称为:IPRIP,由Svchost启动,-k netsvcs表示此服务包含在netsvcs服务组中。

  我们把该服务停掉,然后打开注册表编辑器(开始—运行–regedit),来到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIPRIP下,查看其Parameters子键。Program键的键值SvcHostDLL.exe为后门的Loader;ServiceDll的键值C:WINNTsystem32svchostdll.dll为调用的DLL文件,这正是后门的DLL文件。现在我们删除IPRIP子键(或者用SC来删除),然后在来到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost下,编辑netsvcs服务组,把49 00 70 00 72 00 69 00 70 00 00 00删除,这里对应的就是IPRIP的服务名,具体如图6所示。然后退出,重启。重启之后删除WINNTsystem32目录下的后门文件即可。

  2,BITS.dll

  这是榕哥的作品,也是DLL后门,和SvchostDLL.dll原理基本一样,不过这里使用的是上边介绍的第四种方法,即"修改现有组里的现有服务,把它的ServiceDll指向自己的DLL后门"。换句话说,该后门修改现有的某一个服务,把其原有服务的DLL指向自己(也就是BITS.dll),这样就达到了自动加载的目的;其次,该后门没有自己的Loader,而是使用系统自带的Rundll32.exe来加载。我们还是用Windows 进程管理2.5来查看,从图7中,我们可以看到bits.dll已经插入到Svchost进程当中。

  好,现在我们来看看具体的清除方法,由于该后门是修改现有服务,而我们并不知道具体是修改了哪个服务,所以,在注册表中搜索bits.dll,最后在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasAuto下搜索到了bits.dll,查看Parameters子键下的ServiceDll,其键值为C:WINNTsystem32its.dll。原来,该后门把RasAuto服务原来的DLL文件替换为bits.dll了,这样来实现自动加载。知道了原因就好办了,现在我们把ServiceDll的键值修改为RasAuto服务原有的DLL文件,即%SystemRoot%System32
asauto.dll,退出,重启。之后删除WINNTsystem32目录下的bits.dll即可。

  3,NOIR–QUEEN

  NOIR–QUEEN(守护者)是一个DLL后门&木马程序,服务端以DLL文件的形式插入到系统的Lsass.exe进程里,由于Lsass.exe是系统的关键进程,所以不能终止。在来介绍清除方法之前,我先介绍一下Lsass.exe进程:

  这是一个本地的安全授权服务,并且它会为使用Winlogon服务的授权用户生成一个进程,如果授权是成功的,Lsass就会产生用户的进入令牌,令牌使用启动初始 的Shell。其他的由用户初始化的进程会继承这个令牌。

  从上边的介绍我们就可以看出Lsass对系统的重要性,那具体怎么清除呢?请看下文。

  后门在安装成功后,会在服务中添加一个名为QoSserver的服务,并把QoSserver.dll后门文件插入到Lsass进程当中,使其可以隐藏进程并自动启动。现在我们打开注册表,来到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesQoSserver,直接删除QoSserver键,然后重启。重启之后,我们在来到服务列表中,会看到QoSserver服务还在,但没有启动,类别是自动,我们把他修改为"已禁用";然后往上看,会发现一个服务名为AppCPI的服务,其可执行程序指向QoSserver.exe(原因后边我会说到)。我们再次打开注册表,来到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesAppCPI,删除AppCPI键,重启,再删除QoSserver,最后删除WINNTsystem32目录下的后门文件。

  本人和这个后门"搏斗"了3个多小时,重启N次。原因在于即使删除了QoSserver服务,后门还是在运行,而且服务列表中的QoSserver服务又"死灰复燃"。后来才知道原因:在我删除了QoSserver服务并重启之后,插入到Lsass进程当中的QoSserver.dll文件又恢复了QoSserver服务,并且生成了另外一个服务,即AppCPI,所以我们必须在到注册表中删除AppCPI服务才算是把该后门清除。由此可以看出,现在的后门的保护措施,真是一环扣环。

  注意:在删除QoSserver服务并重启之后,恢复的QoSserver的启动类别要修改为"已禁用",否则即便删除了AppCPI服务,QoSserver服务又运行了。  三、DLL的防范

  看了上边的例子,我想大家对清除DLL后门的方法有了一定的了解,但在现实中,DLL后门并不会使用默认的文件名,所以你也就不能肯定是否中了DLL后门。对于DLL后门,system32目录下是个好地方,大多数后门也是如此,所以这里要非常注意。下面我来具体介绍一下怎么发现DLL后门,希望对大家有所帮助。

  1,安装好系统和所有的应用程序之后,备份system32目录下的EXE和DLL文件:打开CMD,来到WINNTsystem32目录下,执行:dir *.exe>exe.txt & dir *.dll>dll.txt,这样,就会把所有的EXE和DLL文件备份到exe.txt和dll.txt文件中;日后,如发现异常,可以使用相同的命令再次备份EXE和DLL文件(这里我们假设是exe0.txt和dll0.txt),并使用:fc exe.txt exe0.txt>exedll.txt & fc dll.txt dll0.txt>exedll.txt,其意思为使用FC命令比较两次的EXE文件和DLL文件,并将比较结果保存到exedll.txt文件中。通过这种方法,我们就可以发现多出来的EXE和DLL文件,并通过文件大小,创建时间来判断是否是DLL后门。

  2,使用内存/模块工具来查看进程调用的DLL文件,比如Windows优化大师中的Windows 进程管理 2.5。这样,可以发现进程到底调用了什么DLL文件,在结合上边用FC命令比较出来的结果,又能进一步来确定是否中了DLL后门。如果没有优化大师,可以使用TaskList,这个小工具也可以显示进程调用的DLL文件,而且还有源代码,方便修改。

  3,普通后门连接需要打开特定的端口,DLL后门也不例外,不管它怎么隐藏,连接的时候都需要打开端口。我们可以用netstat -an来查看所有TCP/UDP端口的连接,以发现非法连接。大家平时要对自己打开的端口心中有数,并对netstat -an中的state属性有所了解。当然,也可以使用Fport来显示端口对应的进程,这样,系统有什么不明的连接和端口,都可以尽收眼底。

  4,定期检查系统自动加载的地方,比如:注册表,Winstart.bat,Autoexec.bat,win.ini,system.ini,wininit.ini,Autorun.inf,Config.sys等。其次是对服务进行管理,对系统默认的服务要有所了解,在发现有问题的服务时,可以使用Windows 2000 Server Resource Kit中的SC来删除。以上这些地方都可以用来加载DLL后门的Loader,如果我们把DLL后门Loader删除了,试问?DLL后门还怎么运行?!

  通过使用上边的方法,我想大多数DLL后门都可以"现形",如果我们平时多做一些备份,那对查找DLL后门会启到事半功倍的效果。

  现在不少人倾向于使用Server版的操作系统进行网络服务的架设。不可否认,和Pro版系统相比,Server版的系统的确给个人用户提供了更为强大的网络管理功能。但是,当你查看系统进程时,面对众多进程,你可知Server版操作系统在你的后台启动了哪些服务吗?这些服务安全吗?你是否真的需要这些服务呢?

  普通用户常用Windows 2000 Server来架设个人服务器,然而在系统运行时自动启动的服务中,有些是系统运行所必需的,有些是可以停用或禁用的。同时,很多服务还存在一些安全隐患,我们必须将这些危险服务关闭。看来,随随便便地享受“服务”也会给我们带来安全隐患。今天就让我们来了解一下个人服务器架设者们需要更改或慎用的十大服务。

  提示:系统为Windows 2000 Pro的用户同样可以通过本文了解自己的系统中的服务。由于该系统是针对家庭个人用户的,它所提供的网络方面的管理工具并不完善,所以,对于想架设个人服务器的普通用户来说,还是应该采用Windows 2000 Server。

  Messenger   

  危害种类:信息骚扰   

  危害系数:★★★   

  这是发送和接收系统管理员或“警报器”服务消息的服务。   

  自微软公司于90年代中期推出32位操作系统以来,该服务就一直是Windows操作系统中不可缺少的一部分。   

  现在,很多垃圾邮件发送者都利用这一功能向计算机用户发送垃圾信息,建议大家禁用该服务。

  Remote Registry Service   

  危害种类:恶意攻击   

  危害系数:★★★★   

  该服务允许远程用户通过简单的连接就能修改本地计算机上的注册表设置。   

  知道管理员账号和密码的人远程访问注册表是很容易的。打开注册表编辑器,选择“文件”菜单中的“连接网络注册表”选项,在“选择计算机”对话框里的“输入要选择的对象名称”下的输入框中输入对方的IP地址,点击“确定”按钮便会出现一个“输入网络密码”对话框,输入管理员账号和密码,点击“确定”按钮后就可对目标机器的注册表进行修改了。   

  现在,不少木马后门程序可以通过此服务来修改目标机器的注册表,强烈建议大家禁用该项服务。

  Workstation   

  危害种类:信息泄露   

  危害系数:★★★   

  该服务以一个文件系统驱动器的形式工作,并且可以允许用户访问位于Windows网络上的资源。该服务应当只在位于某个内部网络中并受到某个防火墙保护的工作站和服务器上运行。在任何可以连接到Internet的服务器上都应该禁用这个服务。需要提醒大家的是一些独立服务器(例如Web服务器)是不应当加入到某个Windows网络中的。

  ClipBook   

  危害种类:信息泄露   

  危害系数:★★★   

  这个服务允许任何已连接的网络中的其他用户查看本机的剪贴板。为了安全,强烈建议大家将该服务设置为手动。ClipBook所支持的ClipBook Viewer程序可以允许剪贴页被远程计算机上的ClipBook浏览,可以使用户能够通过网络连接来剪切和粘贴文本和图形。   

  Computer Browser   

  危害种类:信息泄露   

  危害系数:★★   

  这个服务可以将当前机器所使用网络上的计算机列表提供给那些请求得到该列表的程序(很有可能是恶意程序),很多黑客可以通过这个列表得知当前网络中所有在线计算机的标志并展开进一步的攻击。建议一般用户禁用该服务。

  Indexing Service

  危害种类:信息泄露   

  危害系数:★★★★★   

  Indexing Service是一个搜索引擎。这个索引服务应该算是多数IIS Web服务器上诸多安全弱点的根源。同时,它也是很多蠕虫病毒爆发的罪魁祸首,例如曾流行一时的红色代码就是利用IIS的缓冲区溢出漏洞和索引服务来进行传播的,而著名的蓝色代码和尼姆达则是分别利用IIS服务的IFRAMEExecCommand、Unicode漏洞来进行传播。   

  因此,如果你不需要架设Web服务器,请一定要关闭该项服务。   

  DNS Client   

  危害种类:信息泄露   

  危害系数:★★   

  该服务是用于查询DNS缓存记录的。可用于对某个已入侵的系统进行DNS查询,可加速DNS查询的速度。攻击者在取得用户的Shell后,可以通过ipconfig/displaydns命令查看用户的缓存内容,获知你所访问过的网站。

  Server   

  危害种类:信息泄露、恶意攻击   

  危害系数:★★★★★   

  该服务提供RPC支持以及文件、打印和命名管道共享。Server服务是作为文件系统驱动器来实现的,可以处理I/O请求。如果用户没有提供适当的保护,会暴露系统文件和打印机资源。   

  对于Windows 2000系统而言,这是一个高风险服务。Windows 2000中默认共享的存在就是该服务的问题。如果不禁用该服务,每次注销系统或开机后,默认共享就会打开,你的所有重要信息都将暴露出来。同时,由于很多Windows 2000使用者为了使用方便把管理员密码设置为空密码或非常简单的密码组合,这给了黑客可乘之机。   

  在此提醒大家,除非你打算在Windows网络上共享文件或打印机,否则就不要运行该服务。  

  TCP/IP NetBIOS Helper Service   

  危害种类:恶意攻击   

  危害系数:★★★★   

  在Windows构建的网络中,每一台主机的唯一标志信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上,它就和一个后门程序差不多了。它很有可能暴露出当前系统中的NetBIOS安全性弱点,例如大家所熟悉的139端口入侵就是利用了此服务。

  由于NetBIOS是基于局域网的,因此,只需要访问Internet资源的一般用户可以禁用它,除非你的系统处于局域网中。   

  Terminal Services   

  危害种类:恶意攻击   

  危害系数:★★★★★   

  该服务提供多会话环境,允许客户端设备访问虚拟的系统桌面会话以及运行在服务器上的基于Windows的程序并打开默认为3389的对外端口,允许外来IP的连接(著名的3389攻击所依靠的服务就是它)。对于这个非常危险的服务,只有“禁用”。   

  配置服务的方法:进入“服务”窗口,右键点击要配置的服务,然后点击“属性”。可根据需要在“常规”选项卡中,点击“自动”、“手动”或“已禁用”。   

  这么多有安全隐患的服务如果没有被广大的个人服务器爱好者所关注,那么黑客入侵简直是易如反掌,服务器被攻占只是迟早的事。笔者在此提醒大家,不要忽略一切看似微不足道的设置,其实合理运用Windows自身的安全机制,也能很好地提升服务器的安全系数。