增强对木马和病毒防范之几大绝招

0

分类 : 系统安全 | 发表时间 15-06-2006

信息来源:http://gooo.77169.com/archives/2006/77592.html

一、问题的提出

  大部分的木马及部分的病毒是通过注册表的自启动项或文件关联或通过系统服务实现自启动的,那是否有一种方法可以防止木马或病毒修改注册表项及增加服务呢?

  二、问题的解决

  windows2000/xp/2003的注册表是可以设置权限的,只是我们比较少用到。设置以下注册表键的权限:

  1、设置注册表自启动项为everyone只读(Run、RunOnce、RunService),防止木马、病毒通过自启动项目启动
  2、设置.txt、.com、.exe、.inf、.ini、.bat等等文件关联为everyone只读,防止木马、病毒通过文件关联启动
  3、设置注册表HKLM/SYSTEM/CurrentControlSet/Services为everyone只读,防止木马、病毒以”服务”方式启动

  注册表键的权限设置可以通过以下方式实现:

  1、如果在域环境里,可能通过活动目录的组策略实现的

  2、本地计算机的组策略来(命令行用secedit)

  3、本文通过setacl这个程序加批处理实现,可以在http://www.helge.mynetcologne.de/setacl/下载

  4、手工操作可以通过regedt32(windows2000系统,在菜单“安全”下的“权限”)或regedit(windows2003/xp,在“编辑”菜单下的“权限”)

  批处理代码在后面给出。

  如果只有users组权限,以上键值默认是只读的,就可以不用这么麻烦了。

  三、适用人群

  1)、对电脑不是很熟悉,不经常安装/卸载软件的人

  2)、喜欢在网上下载软件安装的朋友

  3)、每台电脑的操作人员都有管理员权限,这些人的电脑水平又参差不齐的企业

  四、还存在的问题

  1)、安装杀毒软件,打补丁的时候都可能对那些注册表进行操作,这样就得先恢复权限设置,再安装,安装完成后重新设置。不方便

  2)、防不住3721,不知是不是3721的权限太高了(听说3721是通过驱动程序启动的,有ring 0级权限)

  3)、只适合windows2000/xp/2003,其他的就没办法了

  4)、只能对付那些简单的病毒和木马

  五、其他

  大家看完本文看,可能禁不住大骂:神经病,两三句话就说完的事,非得搞得像论文,写这么一大堆,浪费我时间。如果真的是这样,那真的是对不起了。只因为公司在实施ISO,我也觉得ISO里提倡的东西蛮好的,为了规范化我的文档,我就多做些练习了。

  打包好的程序可以到:
https://www.xfocus.net/php/tools.php?sub=down&tid=741下载。

  六、批处理源代码

@goto start
==============================================================
名称:反特洛伊木马
功能:

1、禁用自启动项目(run runonce runservices)
2、禁止修改.txt、.com、.exe、.inf、.ini、.bat等等文件关联
3、禁止修改”服务”信息

原理:设置注册表权限为只读

版本修订情况

版本号 修订日期 修订人 修订内容
1.0 2004-12-22 netu0 创建本脚本
==============================================================
:start
@SETLOCAL
@rem 活动代码页设为中文
@chcp 936>nul 2>nul
@echo.
@echo ************************************************************
@echo #
@echo #         欢迎使用反特洛伊木马程序
@echo #
@echo #
@echo ************************************************************

:chkOS
@echo.
@ver find “2000″ > nul 2>nul
@if “%ERRORLEVEL%”==”0″ goto :2000
@ver find “Microsoft Windows [版本 5" > nul 2>nul
@if "%ERRORLEVEL%"=="0" goto :2003
@ver find "XP" > nul 2>nul
@if "%ERRORLEVEL%"=="0" goto :XP
@echo.
@echo #您的操作系统不是Windows 2000/XP/2003中的一种,无法使用。
@goto quit

@rem 在下面语句插不同系统的不同命令
:2000
@set UpdatePolicy=secedit /refreshpolicy machine_policy>nul 2>nul
@goto Selection

:XP
@set UpdatePolicy=GPUpdate /Force>nul 2>nul
@goto Selection

:2003
@set UpdatePolicy=GPUpdate /Force>nul 2>nul
@goto Selection

:Selection
@rem User Choice
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1: 安装反特洛伊木马保护
@echo 2: 删除反特洛伊木马保护(恢复默认设置)
@echo 3: 查看技术信息
@echo 4: 退出
@echo.
@set /p UserSelection=输入您的选择(1、2、3、4)
@if "%UserSelection%"=="1" goto install
@if "%UserSelection%"=="2" goto uninstall
@if "%UserSelection%"=="3" goto information
@if "%UserSelection%"=="4" goto quit
@rem 输入其他字符
@cls
@goto Selection

:information
@cls
@echo

============================================================
@echo #
@echo #         欢迎使用反特洛伊木马程序
@echo #
@echo #功能:
@echo #
@echo # 1、设置注册表自启动项为只读(Run、RunOnce、RunService),
@echo # 防止木马、病毒通过自启动项目启动
@echo # 2、设置.txt、.com、.exe、.inf、.ini、.bat等等文件关联为只读,
@echo # 防止木马、病毒通过文件关联启动
@echo # 3、设置注册表HKLM/SYSTEM/CurrentControlSet/Services为只读
@echo # 防止木马、病毒以"服务"方式启动
@echo #
@echo #注意事项:
@echo # 某些安装程序也会用到以上注册表键,请在安装前运行本程序,
@echo # 然后选择2,恢复默认设置。安装完成后,重新运行本程序,
@echo # 然后选择1,实施反特洛伊木马保护
@echo ==============================================================
@echo.
@echo 按任意键,返回选择
@pause>nul 2>nul
@cls
@goto Selection
:install
@set OP=/grant everyone /read /p:no_dont_copy
@goto Doit
:uninstall
@set OP=/revoke everyone /read /p:yes
@goto Doit
:D oit
@echo.
@echo 正在执行操作...
@rem HKLM
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl machine/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul

@rem HKCU
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul
@setacl CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce /registry %OP%>nul 2>nul

@rem USERS
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/M
icrosoft/Windows/CurrentVersion/RunOnce /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunEX /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEX /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesEx /registry %OP%>nul 2>nul
@setacl USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce /registry %OP%>nul 2>nul

@rem Services
@setacl MACHINE/SYSTEM/CurrentControlSet/Services /registry %OP%>nul 2>nul

@rem CLASSES_ROOT
@setacl CLASSES_ROOT/exefile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/inifile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/txtfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/comfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/batfile/shell/open/command /registry %OP%>nul 2>nul
@setacl CLASSES_ROOT/inffile/shell/open/command /registry %OP%>nul 2>nul

@echo 正在更新帐户策略、审核策略......
@REM [刷新本地安全策略]
@%UpdatePolicy%>nul 2>nul
@echo 帐户策略、审核策略更新完成

:complete
@echo 操作完成
@echo.
@echo.
@echo 请按任意键退出。
@pause>nul 2>nul

:quit
@rem Clear
@del %systemroot%/system32/setacl.exe>nul 2>nul
@del %systemroot%/system32/AntiTrojanhorse.bat>nul 2>nul

@ENDLOCAL

一个在黑客界引起轰动的菜鸟教材–编程系列

0

分类 : 网络日志 | 发表时间 15-06-2006

跟我学编程系列
原黑白新区记忆碎片的帖子!转贴上来,供大家学习!!!
发现大部分黑白的朋友都不会编程, 这可不是件好事, 所以这次我就写了一个简单的编程教程, 讲一下VBScript. 主要面向菜鸟, 懂得编程的朋友就不要浪费时间了, 如果你想接触以下VBScript也可以, 但既然有编程基础推荐直接去找一些参考书来读, 会比较快.
什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.
  我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本(Notepad).我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供 “语法高亮”等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus (2.10).
  OK, 我们先来写一个VBScript程序热热身.
REM 输入并回显你的名字
‘使用InputBox和Msgbox函数
Dim name,msg
msg=”请输入你的名字:”
name=Inputbox(msg,”名称”)
Msgbox(name)
  把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件(“保存类型”里面选择”所有文件”).然后双击运行, 观察运行结果. 注意:请自己输入程序清单, 不要复制->粘贴!
  我来解释一下这个程序, 第一行和第二行的开头分别是”REM”语句和” ‘ “, 这两个东西的作用是相同的, 表示本行是注释行, 就是说这两行什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.
  Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫”浮点数”), 也不用考虑是不是字符串(一串字符, 比如:”Hello World”), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.
  下一行被称之为”赋值”, “=”是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于”请输入你的名字:”这个字符串,但当msg被再次复制的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2, b=12.222等等.
  再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个”黑箱”, 有输入(参数)和输出(返回值), 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来”接”住InputBox的返回值–就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用”,”分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg=”请输入你的名字:”, 所以我们在对话框的提示栏就会看到”请输入你的名字:” 第二个参数是对话框的标题, 我们用直接量(学名叫”常量”, 这里是”字符串常量”)传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在”名称”后面再加一个”,”然后输入随便一串字符(字符串,用双引号”"包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.
  Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.
要点:
1) 注释(以REM或’开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.
2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用”=”
3) 以”"包裹起来的字符称之为”字符串”
4) 函数像一个”黑箱”, 有参数和返回值, 用”=”左边的变量可以接住返回值
5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出
作业:
1) 试验Inputbox的第三个参数
2) 写一段程序输出你的年龄
3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出
第二篇:
我真没想到, 第一次的作业竟然有人不会.
  看来要讲的非常非常细致才行, 嗯, 今天讲各种”量”和基本运算
  先说常量, 这个比较简单.
  什么是常量呢, 常量就是其值不可变化的量.
  常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46
如果你在程序中使用”21=46″, 这样的语句将会引发一个错误. 同样的, 字符串也是常量 (还记得字符串吗? 就是包裹在”"之间的一串字符), “Hello World”就是一个例子, 如果你使用”Hello World”=”Bye”这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?
  第二种, 是我们自己定义的常量,这种量也使用代号, 他们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个变量,我们使用”const”这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用),格式是:const 常量名=常量值.
例如:
const PI=3.1415926
const NAME=”记忆碎片”
  这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
  这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:
const hw=”Hello World”
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
  这样当你要修改输出的时候只要修改hw的值就行了.
  好了, 现在我们来看看编程的第一块重要”基石”:变量. 解释变量最好的办法我觉得是”盒子”, 一个变量好像一
个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个”盒子”是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖”盒子”里面装些什么东西, 这样才能找到合适的”盒子”(比如C语言), 但VBS给我提供的是能够自动伸缩的”魔术盒”, 我们不用关心装进去的是什么东西,
VBS会自动调整盒子的大小. 例如:
Dim a1,a2,a3
a1=14
a2=12.23
a3=”Hello”
而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:
int a1; Dim a1 as integer
float a2; Dim a2 as Double
char* a3; Dim a3 as strnig
a1=14; a1=14
a2=12.23; a2=12.23
a3=”Hello”; a3=”Hello”
嗯……扯远了……
  变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个”盒子”把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:
dim a,b,s
a=15
b=12
s=a*b
msgbox(s)
  这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:
dim s
s=15*12
msgbox(s)
  这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.
  现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?
  所以, 我们要接受用户的输入, 还记得吗? InputBox函数.
  修改后程序如下:
dim a,b,s
a=inputbox(“请输入矩形的长:”)
b=inputbox(“请输入矩形的宽:”)
s=a*b
msgbox(s)
  ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.
  我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:
dim ans
ans=12+32/4+[(23-10)*2]
msgbox(ans)
  四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).
  在编程中有一个有趣的运算符是”mod”, 这个运算符叫做”取余运算符”, 就是取得一次除法的余数, 例如
dim a
a=16 mod 5
  你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3….1, 所以mod计算的结果就是1.
  还有一个运算符是”^”(就是键盘”6″上面的小箭头), 他表示”乘幂”(或者是”方”) 比如:
dim a,b,c
a=2
b=a^2
c=a^3
msgbox(a)
msgbox(c)
  则b=a*a=4, c=a*a*a=8
  我们一次不要讲太多, 这次就讲到这里, 现在总结一下.
要点:
1) 常量分为自然常量和自定义常量, 常量的值不可修改
2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字
3) 四则运算在编程中没有任何不同
4) MOD是取余运算
作业:
1) 编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox) PI取值3.14159
2) 编一个程序取得20 / 3 的余数

第三篇(共六篇):



首先, 我来解决一下上次课程的几个疑问

第一, 那个余数问题, 16 / 5 = 3…1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.

第二, 请看一下程序清单:

1)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=a*2+b*2
Msgbox(c)
这个 输入1、2时是6

2)
Dim a,b,c
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
c=(a+b)*2
Msgbox(c)
这个输入1、2时是24

  为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在”+”上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如”Hello”+”World”=”HelloWorld” have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中”1″不等于(<>)1, “1″是一个字符, 而1是一个数, 所以a,b都是字符串变量, “1″+”2″=”12″, 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说”错啦,应该是11″.但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.

  怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:

c=(int(a)+int(b))*2

  这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) ””c是你自己的变量

  大家是不是觉得这个课程有点枯燥, 呵呵, 变量和运算符部分的确是这样的, 不过多多练习也就好了, 这次, 我们写写真正好玩的东西: 流程控制语句. 这个部分开始才是真正的编程.

  首先介绍判断结构.

  在此之前, 我们先介绍一种简单的变量类型:布尔值(Boolean), 这种变量只有两个可能值:True,Flase,即真或假. 这种变量在某些情况下很有用(比如”开关”). 我们定义一个bool变量的方法和其他变量一样, 赋值也一样, 例如:

dim a,b
a=true
b=false

  注意,true和”true”是不一样的, “true”是字符串,true是布尔值, 千万不能混淆.

  回到if语句上来, 我们先来看看简化版的if语句:if 判断式 then 语句体 我们来看一个例子:

dim a,b
a=12
b=13
if b>a then msgbox(“B大于A”)

  我们只看最后一行, a>b这个式子(表达式)有一个返回值, 是bool型的. 因为这个式子只有两种可能:b大于a, b不大于a, 所以这个式子也只有两种可能性, 即真或者假. if语句判断这个表达式的返回值是真还是假, 如果是真(true)则执行then后面的语句, 如果是假, 则不执行, 你把a的值改成14看看还会不会弹出对话框?

  当我们要在判断之后执行多行语句怎么办呢, 我们需要用语句块来解决, 在这里可以叫块if

dim a,b
a=12
b=13
if amsgbox(“A小于B”)
msgbox(“B大于A”)
end if

  两个msgbox函数夹在if和end if之间, 这个部分就是语句块, 块里的每一条语句之前请空出4–8(一个键)个格, 这不是必需的, 但是是一个好习惯, 以便看清楚程序的结构. 这样我们就能运行多于一个的语句, 请注意if…then…end if 这三个关键部分不要掉了. OK, 我出一个题, 输入一个数, 如果小于100就输出”错误”, 如果大于100就输出”正确”, 我这里有两个程序版本:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数 : )
if a>100 then msgbox(“正确”)
if a<100 then msgbox("错误")

还有一个更简单的

dim a
a
=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  看到多了一个else了吧, else的作用就是当要判断的表达式为false时执行的. 这样程序就可以处理两种不同的情况了. 不要忘了用end if结尾

  嘿嘿, 我是变态者, 现在我要你处理三种情况, <100,=100,>100, 还要写在一个if结构里, 你怎么办, 我给你答案:

dim a
a=inputbox(“请输入一个大于100的数”)
a=int(a) ””inputbox返回的是字符串, 我们把他变成整数
if a>100 then
msgbox(“正确”)
elseif a=100 then
msgbox(“老大, 你耍我?”)
else
msgbox(“错误”)
end if

  这次输入100看看, 是什么? else if语句可以在if结构中多次出现, 以灵活判断不同的情况 (如果你要判断得太多, 就请使用”选择结构”, 过会儿就讲), 当所有elseif都处理完了,而没有符合情况的时候再执行else中的语句.另一个例子:

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)

c=a*2+b*2 ””这里没有问题, 会自动转换
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  再看看这个, 无论你回答得多么正确你都是猪头, 哈哈, 不是我耍你, 还是文章开始时候的inputbox的返回类型在耍你, d是inputbox的返回值, 他是一个字符串, 而c是一次整数计算的结果, 他是一个整数. 一个字符串无论如何也不等于一个整数, 尽管他们字面上是一样的:”8″<>(不等于号)8 所以if的判断式的值永远是false, 总是执行else部分的语句. 我们可以这么修改

Dim a,b,c,d
a=inputbox(“a是:”,”输入半径”)
b=Inputbox(“b是:”,”输入半径”)
d=Inputbox(“答案:”,”输入答案”)
d=int(d)
””在这里我们取出了d的值, 变成整数, 在放回”d”这个盒子里
c=a*2+b*2
if d=c then
Msgbox(“你好聪明”)
else
Msgbox(“你好猪头 自己的题还不会!”)
end if

  这样就成功了. 这也是Inputbox函数的一个讨厌的地方, 没办法, vbs没有其他好的输入方式了.

  说到if, 我们不得不说一说逻辑运算符, 今天介绍两种, “and” 和 “or” 学会了if语句之后, 我举一个例子, 你一看就明白了.

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 and b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if

  这段程序让你输入两个值, 必须都大于10, 只要有一个不大于, 就输出错误

dim a,b
a=inputbox(“输入一个数 >10″)
b=inputbox(“输入另一个数 >10″)
a=int(a)
b=int(b)
if a>10 or b>10 then
msgbox(“正确”)
else
msgbox(“错误”)
end if


  这段程序让你输入两个值, 只要有一个大于10, 就返回成功. 其实and和or很好理解, 我读”if a>10 or b>10 then” 这一句, 用华语是这样:”如果a大于10或者b大于10, 那么…”. 这样是不是就很好理解了呢.

  OK, 我们再来看一种新结构, 今天的课就结束, 已经午夜了, 我都累死了.

  当你的程序要处理很多种不同的判断情况的时候elseif..then会让程序看起来很杂乱, 所以就有了一种select case结构专门对付这种情况, select case的语法结构很简单:

select case 变量名
case 值
语句
case 值
语句
case else
语句
end select


  我们举个例子就能很简单的说明:

dim a
a=inputbox(“输入一个1–3的值”)
a=int(a) ””处理inputbox返回字符串的问题
select case a
case 1
msgbox(“壹”)
case 2
msgbox(“贰”)
case 3
msgbox(“叁”)
case else
msgbox(“输入错误”)
end select

  这个例子把1,2,3这三个阿拉伯数字转化成中国大写数字, 这个程序写成if…elseif 的形式如下

dim a
a=inputbox(“请输入1–3的值”)
a=int(a)
if a=1 then
msgbox(“壹”)
elseif a=2 then
msgbox(“贰”)
elseif a=3 then
msgbox(“叁”)
else
msgbox(“输入错误”)
end if

  怎么样, 麻烦吧, 还是select好吧.

  OK, 今天到此结束, 总结一下:


要点:

1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数

2) bool变量的值只有两种:true,false

2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true

3) if 语句的格式

4) select…case的格式


作业:

1) 使用3个bool值, 储存你的3兄弟姐妹是否是男性 (提示:sister1male=false)

2) 给定一个个数, 大于10而且小于20输出”正确”, 否则输出”错误”

3) 输入12,或者15, 输出”正确”, 否则输出”错误”

4) 把5以内的正整数都转换成中国大些数字

5) 自己随便设计一个程序, 应用今天的知识

四篇(共六篇):



大家好, 昨天我休息了一天, 所以今天写第4章:循环结构

  我们先来看一道题:商场进行每日结算, 要求累加出今天的营业额, 每次输入一个数, 这道题其实很简单, 但就我们现在学

过的知识要完成这道题相当麻烦, 我们来分析一下. 首先, 我们需要知道买卖的次数, 这样才能控制输入的次数,但是, 这种设

计是非常低效的, 每天都要重新设计程序. 假定今天进行了5次交易, 以下是源程序:

dim sum
sum=0 ‘初始化变量
sum=sum + int(inputbox(“请输入交易额”))
‘sum=sum+x 这种形式是把本身的值取出来, 进行一次运算, 再放回本身, 这种方法很有用处
‘这里使用了函数嵌套, 把inputbox的返回值直接传给int函数, 转化成整数, 下同
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
sum=sum + int(inputbox(“请输入交易额”))
msgbox(sum)

  看到了吗, 我通过把计算过程复制了5遍才设计好了程序, 这种程序在汽车交易所等交易次数少的地方还能凑合着用, 如果

放到超市岂不是要复制, 粘贴几千遍? 我们今天讲的内容就可以克服这种缺陷, 首先, 我们来讲以下Do…Loop语句.

  do…loop的结构看上去非常简单, 就是:do…loop, 仅此而已, 这个结构不断执行do和loop之间的语句(学名叫:循环体),
永不停止. 举个例子来说:

do
msgbox(“这个信息会不断重复出现, 要停止程序请使用任务管理器(Ctrl+Alt+Del)中止wscript进程”)
loop

  运行这个程序, 当你点销掉一个对话框马上会出来另一个, 你永远点不完, 总有下一个. 谁会运行这样的程序? 除非是给

别人捣乱(我就干过这种事), 所以在do..loop结构中还有一个语句:exit do, 这个语句将终止循环, 跳到loop后面的语句继续

执行. 据个例子来说:

dim a ‘注意:常量不需要在dim里面声明,否则会引发错误
const pass=”123456″ ‘这是一个字符串 请用”"包裹起来. 设定密码为常量, 不可变更
do
a=inputbox(“请输入密码”)
if a=pass then
msgbox(“密码校验成功”)
exit do
end if
loop

  这个程序会一直不停的问你密码, 知道你输入了正确的密码为止.(if可以嵌套在另一个if当中, 也可以嵌套在循环体当中

, 所以一定要用缩进, 来分清楚程序的各个部分). 这个程序是很经典的, 早期的程序都是这么做的. 但是我

杀毒–难道非要用软件(人毒大战的终级指南)

0

分类 : 技术文摘 | 发表时间 14-06-2006

杀毒——难道非要用软件?(人毒大战的终级指南)

在下Creamdog,可以算是一名熟练的C++程序员了,从业六年。曾尝试过写杀毒软件,仅限于对某一种或几种类似病毒的专杀。我的主攻是三维引擎和仿真领域的数据结构和算法,对杀毒软件这种体力活并不在行,因此没有过多的研究,但对于其机理还是有一定了解的。对于琳琅满目的杀毒软件我一向是不屑一顾,因为他们不仅不能够有效的防范、查杀,自己有时也有一些流氓行为,不仅让计算机性能极剧降低,占用了巨大的内存资源,更为可恶的是有时将病毒杀死后竟藏匿尸首,令人哭笑不得。我数年来从未用过任何杀毒软件杀毒,一切病毒靠人工查杀,机器没有一次因病毒而瘫痪,因此我在在预防和查杀上积累了一些经验,希望和朋友们分享。下面将从预防和查杀两个角度展开讨论,希望此文对于饱受病毒之苦的朋友有所帮助。

预防篇

一、98?ME?2K?XP?Vista!?
操作系统是最需要得到重视的,我估计至少有90%以上的病毒是通过各类操作系统漏洞而感染机器的,因此要想从根源上断掉病毒的根,务必从操作系统入手。我更情愿将机器抵抗病毒的能力比喻为人的免疫系统,而操作系统正像人类免疫系统的第一级——皮肤,因此选择一款安全的操作系统是非常重要的,下面是我对MS各操作系统的看法。98和ME已被我列入黑名单,MS实际上已经放弃了对它们的支持,不会再对其安全性做大的升级了,我想它们对于大家来说也没有什么值得留恋的,正如盖茨曾说的“一晃二十年,形式变了!”但如果你必须要使用,最好的防毒办法就是“物理断开”。网线是一定要拨掉的,光盘、软盘、MP3、移动硬盘……还是少插为妙。有人要问了,什么都不能用,我还用98/ME干嘛呀?是啊,我也不知道您非要用98/ME干嘛!我推荐使用2K和XP,尤其是XP。对于目前来讲,XP的安全性还是最高的,微软出任何补丁也是先给XP出。虽然XP有正版验证的问题,但总有办法破解的,下面我会提到。对于新出的vista,我抱有一定的期望。这一次它的发布又跳票到2007年的1月,可见MS对于其安全性之重视程度。希望在未来的几年,我们会过上高枕无忧,藐视病毒的日子。要想了解关于各操作系统的安全性的详细介绍,Google一下!不过我们下面还是来说现实的事吧。

二、更新•更新•再更新
如果windows的自动更新它总是跳出来,恭喜你,你的机器中毒的机率已经很小了!让机器的自动更新功能打开,时刻与微软保持一致,你将几乎不可能遭受到来自互联网的病毒攻击。如果您是新装的操作系统,强烈建议在安装任何程序,访问任何网站之前访问http://www.windowsupdate.com/,并按照提示安装各类更新,可能在安装的过程中重起,重起后需要再次访问,直到它报告你的机器暂时没有任何可用的更新。这时你的操作系统就是安全的了。但MS动用的正版优势计划无疑对于我们这些用D版的人来说是严重的打击,然而道高一尺魔高一丈,对于2K来说,正版验证实同虚设,根本不予正视。而XP就比较讨厌了,前几天MS又强化了验证的有效性,使得靠修改data.dat文件来更新的人一下子手足无措。但令人惊奇的是,MS依然没有封掉JS的调用,我们依然可以通过调用JS函数的方法来绕过正版验证。方法是先进入更新站点,停在第一个页面应该是有“快速”和“自定义”两个按钮,此时将下面的语法输入地址栏:java script:void(window.g_sDisableWGACheck=’all’),然后按回车,你回惊奇的发现——什么也没有发生。但此时您应当仰天大笑了,直接点“自定义”看看,根本就没有验证那回事了!另外有些朋友问我,为什么总是不能更新,开始我也觉得很奇怪,因为一切都对路,但总是提示没有打开那两个讨厌的服务——AutoUpdate&BackTrans——实际上服务正运行着。后来我才发现服务光开着是不行的,还需要将启动类型设为自动。设定后一切问题都立即烟消云散了。下面我们将面临一个是鸡生蛋还是蛋生鸡的问题,我们所面临的情况是每天都有上百种新病毒或其变种问世,每一秒种无数的病毒都在伺机对任何可能的端口发动攻击,然而我们才装的机子就像刚出生的小孩,没有任何抵抗能力,想直接去MS更新谈何容易,在更新期间中毒是再正常不过的事!幸好对于XP和2K来讲都有强大的更新合集,简称SP。希望大家在电脑正常的时候未雨绸缪,从官方下载之,约有一二百兆,可能对于网速慢的朋友来说比较大,但当您需要重装系统的时候,这是您唯一的“还魂丹”!XP目前是SP2,2K是SP4,注意版本。除了SP,随时下载小更新也是很必要的,如果你不清楚近期你的机器自动安装了什么更新,可以到控制面版的“添加删除程序”里查一下(注意,XP要点上面那个“显示更新”)。要下载的话,先记下它们的编号,一般是KBXXXXXX或QXXXXXX,然后到http://www.microsoft.com去搜索这个号就可以得到下载的地址了。这也许对英文有点抱歉的朋友来说是比较麻烦的事,但国内也有一些网站提供了定期的更新合集下载,可以一试。Google一下!

三、上网=中毒?
网页里经常暗藏杀机,对于机器来说,网页恶意程序是计算机的第二大杀手。我将它比喻为人类的呼吸系统,因为现在计算机不能停止上网就像人类不能停止呼吸一样,而人类的每一次呼吸都意味着可能染上可怕的疾病,比如时髦的SARS和禽流感。但不知您注意到了没有,我并没有在这里提到病毒二字,因为我这里所说的只是普通的网站网页,不包括网页上链接的程序,程序的问题下面会讲到。一般来讲网页能做的还没有那么多,顶多是各种脚本写成的恶意程序,并不具有传染性,因此不能称之为病毒。但千万别小瞧它们,让你的IE病到生不如死还是比较轻松的,他可能会修改你的注册表,让你不能够访问IE的属性;也可能不时弹出/关上你的光驱,让你惊恐万分;也可能将你在网上的信息散之天下;当然,最可怕的事就是只要你一开机就弹出无数的广告窗口让你无法使用。看到这里的朋友相信有很多都在咬牙切齿,谁又不是从这一步走过来的呢?当我们有了Maxthon这样的软件,真的一切问题都搞定了,能禁止下载的全部禁止,能屏蔽的广告全部屏蔽,我不相信单纯的网页又有多大的本事能够冲破Maxthon这个好卫兵的门关!

四、软件是可怕的寄主
如果您按照我上面所讲的内容将最基本的“皮肤”和呼吸这两关打好了预防针,其它的就比较好办了,因为我们致少可以保证在下面进行的查杀毒过程中不会二次中毒。俗话说“病从口入”,计算机也是这样的,第三道免疫的重点关卡“口”就是我们常用的各类软件。机器装的软件越多越杂,中毒的可能性就越大,因为现在各类软件就是病毒的最好寄主,尤其是从网页上下载的各种小软件。对于这类病毒攻击其实我也没有太好的办法,实际上,我的机器也常染上一些病毒,但一般的在发作之前就被我干掉了,因为我清楚的知道我装的软件向我机器上写入的每一字节数据,而做到这一点则需要很多年的经验,对于大多数涉网未深的网友又该如何是好呢?我想最好的办法还是自己谨慎。有几个原则要说明的,邮件里来的附
件一律不要打开;你并没想下载什么而自动跳出来让你下载的一律不要下载;网页上弹出的诱人的信息问你是否查看的一律要点“否”;凡是弹出来ActiveX要安装如果你不是非常的清楚并有安装的经验一律不要安装(Microsoft除外,那是自动更新);没有被其它网友推荐过的软件一律不要下载。能做到上面这几个一律的话,我想你已经将机器的第三道免疫关把的很死了。还有一点是不得不提的,那就是现在流行的一个新词汇——流氓软件。它们并非病毒,也非恶意程序,堂尔皇之的挂上官方的旗号,名正言顺的进驻您的机器,但它们从不干好事。无法干净的卸载事小,上网经时经常受到骚扰就很讨厌了,它们唯一的目的就是令所谓的“官方”获益。3721、中文上网、百度工具条、网络猪之流正是如此,要获得完整的流氓软件列表,请Google“流氓软件”。对于我本人来讲,因为业务需要,所以经常要试用一些陌生的软件,这也给病毒攻击带来了机会,然而对于大多数网友来说,计算机只不过一是台“游戏机”或“家庭影院”,其它能用到的功能用的并不多,因此一份各类软件的推荐列表是很重要的。我会尽快出这样一份列表,包括我能想得到的各类用途的软件,选出公认最好的一两种,附上官方下载地址,以帮助朋友们为机器把好免疫关。目前您要是想了解对于各类软件哪些是公认最棒的,还是那句老话:Google一下!

五、光盘、软盘、MP3、移动硬盘……
这是病毒攻击你的最后机会了,因为这些都是硬性插入你的机器而使你的机器得病的,所以我实在不想用人的免疫系统来比喻了,原谅我吧,那太可怕了。如果你的机器有最新的补丁,我想还是可以放心的打开它们的,只要不随意运行来历不明的程序。不过将所有的自动拨放都关掉还是很必要的!对于2K,自动拨放在设备管理器中,查看光驱的属性就可以取消。对于XP,在盘符上点右键,进入属性就可以设置,具体操作我不想多说了,那不是本文的重点,请自行Google。另外,如果你真的对机器的安全性要求很高,那么在你打开这些盘之前,最好还是先用命令提示符进入,看看根目录下有没有可疑的文件。这一步仅限有经验的朋友。

六、系统设置,无懈可击的境界
虽然免疫系统已经万无一失,但人的操作总会出现一些问题,导致病毒有可乘之机。那么从病毒攻击的手段上来讲,我们可以采取一些补救性的措施。将服务列表中没用的服务全部禁用是非常好的做法,尤其是像Task、Message这类服务是一定要禁用的,因为它们常被病毒所利用!偶尔会用到的服务尽量采用手动启动,这样会为将来的查毒提供方便。有关各服务的详细说明,网上到处都是,Google一下就可以得到。请朋友们根据自己的需要设定吧!我的服务列表里自动运行的服务只有二十来个,这已经足够了。另外可能被病毒攻击的地方就是各种即时通讯软件。QQ这样有一定流氓性质的软件,用起来一定要小心,任何人发来的信息中包括的链接不要随便点,实在要看的话,复制到Maxthon里,在所有屏蔽功能打开的状态下前往,这样您将会得到最有效的安全保障。其它可能会自动上网更新的软件,尽量设置为不自动更新,有时他们的行为会令你摸不着头脑,甚至会被误判为病毒,为查毒操作带来相当大的干扰。定期去官网更新是最安全的方式。

到此为止,预防的工作您已经作的很好了,任何的杀毒软件、防火墙(包括XP自带的)你都可以藐视之,并笑傲江湖。但天有不测风雨,再好的免疫系统也有失效的时候,如果您真的由于操作不慎而导致不幸中招,那就请看下面的查杀篇。记得,查杀只能是一种补救措施,而且任何查杀的措施都只能在预防措施完善的情况下进行,因此防患于未燃才是最重要的。


查毒篇
一、工具
虽然不用杀毒软件,但并不意味着不使用任何工具。要想有效的处理病毒,有两类软件是必不可少的,一是进程管理,二是安装监控。进程管理软件目前最好用的是ProcessExplorer,Google一搜就有,它是完全免费的,请前往官方网站下载最新版。安装监控软件我并不想给大家推荐完美卸载之流的软件,因为他们本身都有一定的缺陷,但这类软件对于新手来讲还是必要的,至少可以让你看到一个安装程序运行的每一个细节,以积累一些查毒经验。我推荐使用的是RegMon软件,它也是完全免费的,并且功能强大,可以随时监控任何程序对注册表进行的任何读、写、创建等操作,这是我们将病毒清理干净的一把利刃,请前往官方网站下载最新版。以上就是我仅仅推荐的两款软件,都是很小的绿色软件,大家放心使用吧!

二、半自动实时监控
我们对于病毒最大的问题是如何知道病毒程序正在运行,这也是电脑新手面临的最大难题,他们往往借助于各类杀毒软件。但这不仅于事无补,并且会导致你的机器性能大幅下降。我做过测试,在同样的机器,上同样时长的网,开杀毒软件导致的用电量都将比不开杀毒软件高出30%左右,这太可怕了。众所周知,我国目前的电能资源极度紧缺……。好,朋友们会问了,不用杀毒软件你怎么知道机器被病毒感染了?我想告诉你的是每一台计算机都有两套天生的病毒警报装置,一套就是机箱上的HDD端口(硬盘)指示灯。学会观查指示灯状态,听辨硬盘的读盘声是非常重要的,也并不很难。首先我们要明确的知道我们现在正在机器上做什么,用到的程序是否会大量的读写硬盘。显然,没有任何一种应用软件在使用的时候会从头到尾不停的读写硬盘(磁盘碎片整理程序等除外),事实上运行大多数程序时,绝大多数时间硬盘也应该只是处于偶尔闪烁一下的状态,包括听歌、看电影、写文档、上网下载甚至是打游戏!但如果硬盘灯在不停的闪,并不断的发出“巨大”的响声,而你并没有进行很复杂的操作,那你的机器就很可能有危险了。排除检测法是很必要的,当你发现机器的硬盘不正常的运作,请将所运行的程序一个个的关掉,直到硬盘工作状态缓和下来。这样就很可能发现原来是某一个程序整在干“坏事”,不过当你把所有的程序都关掉时硬盘仍然在不停的运作就是令人感到非常不安的信号,这时您就应该高度的警惕了!另外一套自动警报装置来自于系统的响应效率。如果你发现你并没有运行什么操作繁杂的程序,但机器却变的很慢,甚至连打开“我的电脑”都要花一些时间的话,我将不幸的告诉您,您的机器八成是中毒了。效率低也可能分几种情况,比如时不时的顿一下,或着每次开机需要很长时间等,这都应该引起我们的注意。当然很多病毒在潜伏期是很安静的,对于这种病毒我们又如何才能发现呢?这确实是一个问题,但很有经验的朋友并不会为此感到担心,因为只要是病毒总会做出一些细小的动作,如果您对你的机算机上任何一个程序的运行过程都了如直掌的话,那病毒隐蔽的再好也不可能逃过你的眼睛。当然这需要长期积累的经验,没有经验的朋友请看下面的内容吧,一台高效病毒监控仪将会成为病毒最残忍的克星!

三、每一个进程都是我们的朋友
孙子曰“知己知彼,百战不殆”,我们必须

什么叫网关的精解

0

分类 : 技术文摘 | 发表时间 14-06-2006

假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。
但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话:

小不点:李大爷,我想找班主任查一下小明的电话号码行吗?

李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚
了小明的电话)问到了,他家的号码是211.99.99.99

小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。

李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请
求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大
爷把电话给转到小明家)

就这样你和小明取得了联系。

至于DHCP服务器嘛,可以这样比喻:

你家院子里的居民越来越多了,传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了,所以只好采用了一种新技术叫做DHCP,居民们开机的时候随机得到一个电话号码,每一次得到的号码都可能会不同。

你家门口的李大爷:就是你的网关
你的班主任:就是你的DNS服务器
传达室的电话交换机:就是你的DHCP服务器

同上,李大爷和王大爷之间的对话就叫做路由。

另:如果还有个小朋友叫做小暗,他住的院子看门的是孙大爷,因为小暗的院子刚盖好,孙大爷刚来不久,他没有李大爷和王大爷办公室的电话(李大爷和王大爷当然也没有他的电话),这时会有两种情况:
1、居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话(同时赵大妈也告诉了李、王关于孙的电话),这就叫静态设定路由
2、赵大妈病了,孙大爷自己到处打电话,见人就说:“我是小暗他们院子管电话的”,结果被李、王二位听到了,就记在了他们的通讯录上,然后李、王就给孙大爷回了个电话说:“我是小明(小不点)他们院子管电话的”,这就叫动态设定路由

然后有一天小不点要找小暗,结果自然是小不点给李大爷打电话说:“大爷,我找小暗”(这里省略了李大爷去查小暗电话的过程,假设他知道小暗的电话),李大爷一找通讯录:“哦,小暗的院子的电话是孙大爷管着的,要找小暗自然先要通知孙大爷,我可以通知王大爷让他去找孙大爷,也可以自己直接找孙,那当然是自己直接找孙方便了”,于是李大爷给孙大爷打了电话,然后孙大爷又把电话转到了小暗家。

这里李大爷的通讯录叫做路由表。
李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择。

李大爷之所以选择直接找孙大爷是有依据的,因为他直接找孙大爷就能一步到位,如果要王大爷转接就需要两步才能完成,这里的“步”叫做“跳数”,李大爷的选择遵循的是最少步骤(跳数)原则(如果他不遵守这个原则,小不点可能就会多等些时间才能找到小暗,最终结果可能导致李大爷因工作不力被炒鱿鱼,这叫做“延时太长,选路原则不合理,换了一个路由器”)

当然,事情总是变化的,小不点和小明吵架了,这些天小不点老是给小暗打电话,小明心里想:“操,他是不是在说我坏话啊?”于是小明决定偷听小不点和小暗的通话,但是他又不能出院子,怎么办呢?小明做了这样一个决定:

首先他告诉自己院里管电话的王大爷说:“你给李大爷打个电话说小暗搬到咱们院子了,以后凡是打给他的电话我来接”,王大爷没反映过来(毕竟年纪大了啊!)就给李大爷打了电话,说:“现在我来管理小暗的电话了,孙已经不管了”,结果李大爷就把他的通讯录改了,这叫做路由欺骗。

以后小不点再找小暗,李大爷就转给王大爷了(其实应该转给孙大爷的),王大爷收到了这个电话就转给了小明(因为他之前已经和小明说好了),小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚,害怕明天小不点和小暗见面后当面问他,于是通信断了之后,又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话,有这就叫数据窃听

再后来,小不点还是不断的和小暗联系,而零落了小明,小明心里嘀咕啊:“我不能总是这样以小暗的身份和小不点通话啊,外一有一天露馅了怎么办!”于是他想了一个更阴险的招数:“干脆我也不偷听你们的电话了,你小不点不是不给我打电话吗!那我让你也给小暗打不了,哼哼!”,他怎么做的呢?我们来看:

他联系了一批狐朋狗友,和他们串通好,每天固定一个时间大家一起给小暗院子传达室打电话,内容什么都有,只要传达室的孙爷爷接电话,就会听到“打雷啦,下雨收衣服啊!”、“人是人他妈生的,妖是妖他妈生的”、“你妈贵姓”等等,听的脑袋都大了,不听又不行,电话不停的响啊!终于有一天,孙爷爷忍不住了,大喊一声:“我受不了拉!!!!”,于是上吊自杀了!

这就是最简单的DDOS攻击,孙爷爷心理承受能力弱的现象叫做“数据报处理模块有BUG”,孙爷爷的自杀叫做“路由器瘫痪”。如果是我,就会微笑着和他们拉家常,例如告诉他们“我早就听了天气预报,衣服10分钟前已经收好了”或者“那你妈是人还是妖”或者“和你奶奶一个姓”等等,我这种健全的心理叫做“健壮的数据报处理,能够抵御任何攻击”

孙爷爷瘫了之后,小不点终于不再给小暗打电话了,因为无论他怎么打对方都是忙音,这种现象叫做“拒绝服务”,所以小明的做法还有一个名字叫做“拒绝服务攻击”。

小明终于安静了几天,…

几天后,小明的院子来了一个美丽的女孩,名字叫做小丽,小明很喜欢她(小小年纪玩什么早恋!)可是小丽有个很帅的男朋友,小明干瞪眼没办法。当然这里还是要遵循上面的原则:小丽是不能出院子的。那个男的想泡小丽自然只能打电话,于是小明又蠢蠢欲动了:
还记得王爷爷是院子的电话总管吗?他之所以能管理电话是因为他有一个通讯录,因为同一个院子可能有2个孩子都叫小明,靠名字无法区分,所以通讯录上每一行只有两项:

门牌 电话
一号门 1234567 (这个是小明的)
二号门 7654321 (这个是小丽的)
……

王爷爷记性不好,但这总不会错了吧(同一个院子不会有2个“二号门”吧)?每次打电话人家都要说出要找的电话号码,然后通过通讯录去院子里面敲门,比如人家说我找“1234567”,于是王爷爷一比较,哦,是一号门的,他就去敲一号门“听电话”,如果是找“7654
321”,那他就找二号门“听电话”。

这里的电话号码就是传说中的“IP地址”
这里的门牌号就是传说中的网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的)

小明心里想“奶奶的,老子泡不到你也别想泡”,于是他打起了王爷爷通讯录的主意,经过细心的观察,周密的准备,他终于发现王爷爷有尿频的毛病(毕竟是老人啊…),终于在一个月黑风高的白天,王爷爷去上厕所了,小明偷偷的摸进传达室,小心翼翼的改了王爷爷的通讯录……

过了几天,小丽的男朋友又给小丽打来了电话,对方报的电话是“7654321”,王爷爷一看通讯录,靠:

门牌 电话
一号门 1234567 (这个是小明的)
一号门 7654321 (注意:这个原来是小丽的,但是被小明改了)
……

王爷爷不知道改了啊,于是就去找一号门的小明了,小明心里这个美啊,他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系,结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生…

这里小明的行为叫做“ARP欺骗”(因为在实际的网络上是通过发送ARP数据包来实现的,所以叫做“ARP欺骗”),王爷爷的通讯录叫做“ARP表”

这里要注意:王爷爷现在有两个通讯录了,一个是记录每个院子传达室电话的本本,叫做“路由表”,一个是现在说的记录院子里面详细信息的本本,叫做“ARP表”。

有句命言是“人们总是在追求完美的,尽管永远也做不到”(请记住这句话,因为这是一个大名人–也就是我,说的)

王爷爷的制度中有一条是这么写的“每个月要重新检查一下门牌号和电话的对应本(也就是ARP表)”,这个动作叫做“刷新ARP表”,每个月的时间限制叫做“刷新ARP表的周期”。这样小明为了让那个男的永远不能找到小丽,之后每个月都要偷偷改一次那个通讯录,不过这样也是不得不做的事啊!
补充一点,小明是很聪明的,如果通讯录(ARP表)被改成了这样:

门牌(MAC) 电话(IP)
一号门 1234567 (这个是小明的)
二号门 1234567 (注意:这个被小明改了,但是他一时头晕改错了)
……

就会是计算机就会弹出一个对话框提示“出现重复的IP地址”,最终会导致王爷爷不知所措,于是通知一号门和二号门,你们的电话重复了。这样小丽就知道有人在破坏她的好事,这个现象叫做“骗局被揭穿了”

小不点知道了小明偷听他和小暗的电话,于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。土豆-〉星期三,地瓜-〉请客,笨蛋-〉小不点家。于是小不点告诉小暗:土豆笨蛋地瓜。小明听了???不懂。。。。郁闷了。。。这是加密。
除此之外,小丽也知道了小明改他家的电话号码了。于是王爷爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许外人修改,只能自己有钥匙(密码)。这是ip地址和MAC地址绑定。当有人改了电话号码的时候,就得找王爷爷改。麻烦是麻烦了,但是安全了。不过小明偷偷的把王爷爷的钥匙偷配了一把(盗窃密码成功),于是他还可以修改。这样么,就这样了。

交换机中的工作原理以及种类的区分

1

分类 : 技术文摘 | 发表时间 14-06-2006

许多新型的Client/Server应用程序以及多媒体技术的出现,导致了传统 的共享式网络远远不能满足要求,这也就推动了局域网交换机的出现。

  1、交换机的定义

  局域网交换机拥有许多端口,每个端口有自己的专用带宽,并且可以连接不同的网段。交换机各个端口之间的通信是同时的、并行的,这就大大提高了信息吞吐量。为了进一步提高性能,每个端口还可以只连接一个设备。

  为了实现交换机之间的互连或与高档服务器的连接,局域网交换机一般拥有一个或几个高速端口,如100M以太网端口、FDDI端口或155M ATM端口,从而保证整个网络的传输性能。

  2、交换机的特性

  通过集线器共享局域网的用户不仅是共享带宽,而且是竞争带宽。可能由于个别用户需要更多的带宽而导致其他用户的可用带宽相对减少,甚至被迫等待,因而也就耽误了通信和信息处理。利用交换机的网络微分段技术,可以将一个大型的共享式局域网的用户分成许多独立的网段,减少竞争带宽的用户数量,增加每个用户的可用带宽,从而缓解共享网络的拥挤状况。由于交换机可以将信息迅速而直接地送到目的地能大大提高速度和带宽,能 保护用户以前在介质方面的投资,并提供良好的可扩展性,因此交换机不但是网桥的理想替代物,而且是集线器的理想替代物。

  与网桥和集线器相比,交换机从下面几方面改进了性能:

  (1)通过支持并行通信,提高了交换机的信息吞吐量。

  (2)将传统的一个大局域网上的用户分成若干工作组,每个端口连接一台设备 或连接一个工作组,有效地解决拥挤现像。这种方法人们称之为网络微分 段(Micro一segmentation)技术。

  (3)虚拟网(VirtuaI LAN)技术的出现,给交换机的使用和管理带来了更大 的灵活性。我们将在后面专门介绍虚拟网。

  (4)端口密度可以与集线器相媲美,一般的网络系统都是有一个或几个服务器,而绝大部分都是普通的客户机。客户机都需要访问服务器,这样就导致服务器的通信和事务处理能力成为整个网络性能好坏的关键。

  交换机就主要从提高连接服务器的端口的速率以及相应的帧缓冲区的大小,来提高整个网络的性能,从而满足用户的要求。一些高档的交换机还采用全双工技术进一步提高端口的带宽。以前的网络设备基本上都是采用半双工的工作方式,即当一台主机发送数据包的时候, 它就不能接收数据包,当接收数据包的时候,就不能发送数据包。由于采用全双工技术,即主机在发送数据包的同时,还可以接收数据包,普通的10M端口就可以变成20M端口,普通的100M端口就可以变成200M 端口,这样就进一步提高了信息吞吐量。

  3、交换机的工作原理

  传统的交换机本质上是具有流量控制能力的多端口网桥,即传统的(二层) 交换机。把路由技术引入交换机,可以完成网络层路由选择,故称为三层交换,这是交换机的新进展。交换机(二层交换)的工作原理交换机和网桥一样,是工作在链路层的联网设备,它的各个端口都具有桥接功能,每个端口可以连接一个LAN或一台高性能网站或服务器,能够通过自学习来了解每个端口的设备连接情况。所有端口由专用处理器进行控制,并经过控制管理总线转发信息。

  同时可以用专门的网管软件进行集中管理。 除此之外,交换机为了提高数据交换的速度和效率,一般支持多种方式。

  (1)存储转发:

  所有常规网桥都使用这种方法。它们在将数据帧发柱其他端口之前,要把收到的帧完全存储在内部的存储器中,对其检验后再发往其他端口,这样其延时等于接收一个完整的数据帧的时间及处理时间的总和。如果级联很长时,会导致严重的性能问题,但这种方法可以过滤掉错误的数据帧。

  (2)切入法:

  这种方法只检验数据帧的目标地址,这使得数据帧几乎马上就 可以传出去,从而大大降低延时。

  其缺点是:错误帧也会被传出去。错误帧的概率较小的情况下,可以采用切入法以提高传输速度。而错误帧的概率较大的情况下,可以采用存储转发法/以减少错误帧的重传。

  4、交换机的配置

  我们下面以Cisco公司的Catlystl900交换机为例,介绍交换机的一般配置过程。

  对一台新的Catlystl900交换机,使用它的缺省配置就可以工作了。这因为它是一种将软件装在FlashMemory中的硬件设备,当加电时,它首先要进行一系列自检,对所有端口进行测试之后,交换机就处于工作状态。这时它的交换表是空的,它可以通过自学习来了解各个端口的设备连接情况,并将设备的 MAC地址记录在交换表中,当有信息交换时,交换机就根据交换表来进行数据转发。

  但为了便于对它进行网络管理,Catlystl900交换机自己有一个MAC地址,这样就可以为它分配一个IP地址和屏蔽码。网络管理员须通过交换机的串口接一台终端或仿真终端,才能为它指定一个IP地址,其缺省值是0.0.0.0。指定IP地址以后,网络管理员就可以通过网络进行远程管理了。Catlystl900交换机的配置界面是菜单形式,缺省配置下,它的所有端口都属于同一个VLAN,很多情况下都不需要作什么修改。

  (1)将微机串口通过RS一232电缆与Cata1yst1900的Console口连接,运行仿真终端软件,Catalyst 1900 启动后。

  (2)回车后,进入主菜单:

  (3)按“S”键,进入系统配置菜单:(配置系统名,位置,日期)

  (4)在主菜单中按“N”键进入网络管理菜单

  (5)配置IP地置

  (6)配置SNMP参数

  5、交换机的种类

  交换机是数据链路层设备,它可将多个物理LAN网段连接到一个大型网络上,与网络类似交换机传输和溢出也是基于MAC地址的传输。由于交换机是用硬件实现的,因此,传输速度很快。传输数据包时,交换机要么使用存储—转发交换方式,要么使用断—通交换方式。目前有许多类型的交换机,其中包括ATM交换机,LAN交换机和不同类型的WAN交换机。

  ATM交换机

  ATM(Asynchronous Transfer Mode)交换机为工作组,企业网络中枢以及其它众多领域提供了高速交换信息和可伸缩带宽的能力。ATM交换机支持语音,视频和文本数据应用,并可用来交换固定长度的信息单位(有时也称元素)。企业网络是通过ATM中枢链路连接多个LAN组成的。

  局域网交换机

  LAN交换机用于多LAN网段的相互连接,它在网络设备之间进行专用的无冲突的通信,同时支持多个设备间的对话。LAN交换机主要是用于高速交换数据帧。通过LAN交换机将一个0Mbps以太网与一个100Mbps 以太网互联。

磁盘阵列系统(RAID)技术详解

0

分类 : 技术文摘 | 发表时间 14-06-2006

RAID入门基础及RAID0技术详解

  随着计算机应用的日益普及,人们对计算速度和性能的要求也逐渐提高。在一个完整的计算机系统中,CPU和内存的作用固然重要,但是数据存储设备性能的好坏和速度的快慢也直接影响到整个系统的表现。本文所要讲解的RAID技术起初主要应用于服务器高端市场,但是随着个人用户市场的成熟和发展,正不断向低端市场靠拢,从而为用户提供了一种既可以提升硬盘速度,又能够确保数据安全性的良好的解决方案。本文将对RAID技术进行较为详细的介绍,希望能够对广大读者有所帮助。

  入门基础

  RAID是英文Redundant Array of Inexpensive Disks的缩写,中文简称为磁盘阵列。其实,从RAID的英文原意中,我们已经能够多少知道RAID就是一种由多块廉价磁盘构成的冗余阵列。虽然RAID包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备出现。RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。

  人们在开发RAID时主要是基于以下设想,即几块小容量硬盘的价格总和要低于一块大容量的硬盘。虽然目前这一设想还没有成为现实,RAID在节省成本方面的作用还不是很明显,但是RAID可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外,RAID还可以提供良好的容错能力,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

  RAID 0

  提到RAID分为几种不同的等级,其中,RAID 0是最简单的一种形式。RAID 0可以把多块硬盘连接在一起形成一个容量更大的存储设备。最简单的RAID 0技术只是提供更多的磁盘空间,不过我们也可以通过设置,使用RAID 0来提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,但是实现成本是最低的。

  RAID 0最简单的实现方式就是把几块硬盘串联在一起创建一个大的卷集。磁盘之间的连接既可以使用硬件的形式通过智能磁盘控制器实现,也可以使用操作系统中的磁盘驱动程序以软件的方式实现。图示如下:



  在上述配置中,我们把4块磁盘组合在一起形成一个独立的逻辑驱动器,容量相当于任何一块单独硬盘的4倍。如图中彩色区域所示,数据被依次写入到各磁盘中。当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。

  这种设置方式只有一个好处,那就是可以增加磁盘的容量。至于速度,则与其中任何一块磁盘的速度相同,这是因为同一时间内只能对一块磁盘进行I/O操作。如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,无法继续使用。从这种意义上说,使用纯RAID 0方式的可靠性仅相当于单独使用一块硬盘的1/4(因为本例中RAID 0使用了4块硬盘)。

  虽然我们无法改变RAID 0的可靠性问题,但是我们可以通过改变配置方式,提供系统的性能。与前文所述的顺序写入数据不同,我们可以通过创建带区集,在同一时间内向多块磁盘写入数据。具体如图所示:


  上图中,系统向逻辑设备发出的I/O指令被转化为4项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚的看到通过建立带区集,原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

  在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。

  我们已经知道,带区集可以把数据均匀的分配到所有的磁盘上进行读写。如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。示意图如下:


  这样,我们就可以把原先控制器总线上的数据流量降低一半。当然,最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。

  RAID 1技术详解

  虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。

  RAID 1和RAID 0截然不同,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。RAID 1是所有RAID等级中实现成本最高的一种,尽管如此,人们还是选择RAID 1来保存那些关键性的重要数据。

  RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。显然,磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。下图显示的是由4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘(画斜线的为镜像部分)。

  

  RAID 1下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用,RAID 1甚至可以在一半数量的硬盘出现问题时不间断的工作。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据。

  通常,我们把出现硬盘故障的RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。   更换新盘之后,原有好盘中的数据必须被复制到新盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。

  因为RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。下图示意了使用两个控制器的磁盘镜像。



  使用两个磁盘控制器不仅可以改善性能,还可以进一步的提高数据的安
全性和可用性。我们已经知道,RAID 1最多允许一半数量的硬盘出现故障,所以按照我们上图中的设置方式(原盘和镜像盘分别连接不同的磁盘控制),即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。

  RAID 0+1

  单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。

  RAID3和RAID5技术详解

  热插拔

  一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。所谓热插拔功能,就是允许用户在不关闭系统,不切断电源的情况下取出和更换损害的硬盘。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。

  校验

  RAID 3和RAID 5都分别使用了校验的概念提供容错能力。简单的说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其它所有字位是否正确的特殊位。   在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,我们可以简单计算数字位1的个数,并在字节内加入附加校验位。在数据的接收方,如果数字位1的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误。

  RAID系统也采用了相似的校验方法,可以在磁盘系统中创建校验块,校验块中的每一位都用来对其它关联块中的所有对应位进行校验。

  在数据通讯领域,虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是远远不够的。固然错误的检测非常重要,但是如果不能对错误进行修复,我们就无法提高整个系统的可靠性。

  举个例子来说,假设我们发现校验块中第10个字节的第5位不正确。如果这个校验块包含的是另外8个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?也许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上,RAID主要是借助磁盘控制器的错误报告检测错误位置,并进行修复。如果磁盘控制器在读取数据时没有发出任何“抱怨”,那么系统将会视该数据为正确数据,继续使用。

  RAID 3

  RAID 3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由4块硬盘构成的RAID 3系统中,3块硬盘将被用来保存数据,第四块硬盘则专门用于校验。这种配置方式可以用3+1的形式表示,具体如图:



  在上图中,我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块。校验块和所有对应的数据块一起构成一个带区。

  第四块硬盘中的每一个校验块所包含的都是其它3块硬盘中对应数据块的校验信息。RAID 3的成功之处就在于不仅可以像RAID 1那样提供容错功能,而且整体开销从RAID 1的50%下降为25%(RAID 3+1)。随着所使用磁盘数量的增多,成本开销会越来越小。举例来说,如果我们使用7块硬盘,那么总开销就会将到12.5%(1/7)。

  在不同情况下,RAID 3读写操作的复杂程度不同。最简单的情况就是从一个完好的RAID 3系统中读取数据。这时,只需要在数据存储盘中找到相应的数据块进行读取操作即可,不会增加任何额外的系统开销。

  当向RAID 3写入数据时,情况会变得复杂一些。即使我们只是向一个磁盘写入一个数据块,也必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中。例如,当我们向上图中的绿色数据块写入数据时,必须重新计算所有3个绿色数据块的校验值,然后重写位于第四块硬盘的绿色校验块。由此我们可以看出,一个写入操作事实上包含了数据读取(读取带区中的关联数据块),校验值计算,数据块写入和校验块写入四个过程。系统开销大大增加。

  我们可以通过适当设置带区的大小使RAID系统得到简化。如果某个写入操作的长度恰好等于一个完整带区的大小(全带区写入),那么我们就不必再读取带区中的关联数据块计算校验值。我们只需要计算整个带区的校验值,然后直接把数据和校验信息写入数据盘和校验盘即可。

  到目前为止,我们所探讨的都是正常运行状况下的数据读写。下面,我们再来看一下当硬盘出现故障时,RAID系统在降级模式下的运行情况。

  RAID 3虽然具有容错能力,但是系统会受到影响。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立。如果我们是从好盘中读取数据块,不会有任何变化。但是如果我们所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据。

  当我们更换了损坏的磁盘之后,系统必须一个数据块一个数据块的重建坏盘中的数据。整个过程包括读取带区,计算丢失的数据块和向新盘写入新的数据块,都是在后台自动进行。重建活动最好是在RAID系统空闲的时候进行,否则整个系统的性能会受到严重的影响。

  RAID 3的性能问题

  除了我们在上文讨论过的有关数据写入和降级模式的问题之外,在使用RAID 3的过程中还有其他一些性能上的问题需要引起我们的注意。RAID 3所存在的最大一个不足同时也是导致RAID 3很少被人们采用的原因就是校验盘很容易成为整个系统的瓶颈。   我们已经知道RAID 3会把数据的写入操作分散到多个磁盘上进行,然而不管是向哪一个数据盘写入数据,都需要同时重写校验盘中的相关信息。因此,对于那些经常需要执行大量写入操作的应用来说,校验盘的负载将会很大,无法满足程序的运行速度,从而导致整个RAID系统性能的下降。鉴于这种原因,RAID 3更加适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和WEB服务器等。

  RAID 5

  RAID 3所存在的校验盘的性能问题使几乎所有的RAID系统都转向了RAID 5。在运行机制上,RAID 5和RAID 3完全相同,也是由同一带区内的几个数据块共享一个校验块。

  RAID 5和RAID 3的最大区别在于RAID 5不是把所有的校验块集中保存在一个专门的校验盘中,而是分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。具体如图所示:



  注意图中的校验块已经被分散保存在不同的磁盘中,这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。

AntiAttackFireWall(AAFW)源代码发布暨开源公告

0

分类 : 技术文摘 | 发表时间 13-06-2006

文章作者:Fr. Qaker [E.S.T]
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

备注:AXLFilter研究中

本软件开源目的
防御CC类型攻击,共享ISAPI编程思路,追求共享精神。

开源花絮
AAFW在2005年12月底就已经完成,现在需要的就是一些功能的补充和界面的优化,所以还是具有一定学习意义的。
原来发布过CC的源代码,但是发生了一些很不开心的事。这次要发布代码,很多朋友因此建议我不要开源。但是,代码放在手里,放着也是浪费,也不符合自己的共享精神。当初,我自己成长的时候也是读别人的代码提高自身的过程,乘凉不忘栽树人。虽然有不少小人,就让他去吧,真理永远变不了,小人得逞只是一时,大家技术的共同提高,共享精神的保持才是最重要的。

AntiAttackFireWall(AAFW)介绍
AA防火墙是一款IIS ISAPI防火墙,利用ISAPI FILTER进行系统保护,利用ISAPI EXTENTION进行管理。
目前代码已经实现了,有效防止盗链,有效防止CC攻击,有效控制文件下载,有效IP连接限制等功能,而且很多功能都考虑到了扩充问题,所以很容易的修改代码进行功能添加。
特别提下,里面的Base64的编码功能是我从网络上复制的一段代码改编来的。
IP管理用的是二叉树进行内存查找,正常情况下,十万次IP记录(十万数量级)的查找能在0.01秒内完成,建议修改的时候将数据进行hash算法。
原创SQL注入保护代码混合在Decode里面,过滤了()<>‘;= 因为<>=是判断符号,没有这三个符号,基本无法进行条件语句的构造,用()限制了decalre这样的使用和sql语句的套用,用’;杜绝了SQL语句的分隔,应该说,这样的过滤是相对比较安全,而且有效的。
程序本身有访问者按IP管理,所以很方便进行下载限制。
盗链问题,用的是IP判断,看访问者是否访问过本站,用以判断,而不是refer判断,建议加上refer判断增加精确性,接下来会专门研究这个问题。
防止CC攻击用的就是原来我给出的asp防御的思路,采用IIS ASP的随机生成Session的方法,而且session值绑定在访问者的IP记录下。
控制文件下载,也是基于IP的,建议参考后台管理的登录代码,运用Base64的解码,可以很方便的开发会员区这样专业级别的登录控制,甚至可以考虑使用数据库存储用户,比ASP的管理有效的多,而且安全。

顺带感叹
近日的迅雷事件,我在这里支持天空,鄙视华军和迅雷。
迅雷的软件,思路,效率令人佩服,确实是个好东西。但是,大家听说过杀鸡取卵的故事么,迅雷现在就是,他自己建立了门户,提供软件搜索,软件从其他软件下载站下载。看上去挺不错的。潜在问题发生了,一个软件,很多地方同时提供,但是在迅雷中显示的站点只有一个,那么以后各家下载的站估计都要给迅雷送钱,这样才能让自己的站点多显示几次,多一些广告收入阿。下载的时候,管你是谁,只要有这个文件,迅雷就能下,流量上去了。这样做来,用户感觉不错,速度快,但是下载站呢?流量上去了,广告下来了,收入比支出少了,而且广告成倍的少,流量成倍的加,后果是什么?还记得baidu的mp3搜索吧,现在音乐站还有多少?还记得baidu的竞价广告吧,不给钱,你的页面别显示了,你的软件我照样用,不服?叫天天不应,叫地地不灵。说实话,迅雷作软件,佩服,做门户,卑鄙。杀鸡取卵,不改大家以后都没软件下,不信看吧。迅雷可是说了哦,我们不提供软件下载的,嘿嘿。
再说一个潜在威胁,迅雷就使加强版的CC,不信就看,千万用户一起用,每人5个连接,迅雷说今天,天空和我闹,大家一起去挤它的软件下载吧,天空崩溃了。明天,华军这个小人又出尔反尔了,大家去挤它吧。别和我说什么它很有商业道德,baidu多大的一个网站,不照样出来一个8848攻击事件,这次迅雷的做法,嘿嘿,好像更猛。
华军,嘿嘿,就是一个炒作家,先领头出来说,迅雷卑鄙阿,坏阿,然后,不知道得到什么好处,嘿嘿,第一个叛变了,不信大家去华军网上看看,这样的领头羊,嘿嘿,就是披着狼皮,自己炒作自己,能活到最后,但是第一个出卖用户的肯定是它。
天空,赞一个,支持一个,顶住,你要倒了,我们以后软件下载没了,一定要坚持住,让迅雷改。谢谢。

推荐网站
VIF:一个商业版本的IIS防火墙,界面比我的好看多了,功能呢,说实话是同类产品,但是有后续性,不断更新重,大家支持一个http://vif.foosun.cn

邪恶八进制:我的根据地,欢迎大家来指导 http://forum.eviloctal.com/ ,
我的软件首发地色釉-信手绾红尘:美文欣赏http://blog.sina.com.cn/u/1236648217强烈推荐里面的诱惑,嘿嘿http://blog.sina.com.cn/u/49b5c1190100043h

NDS论坛:喜欢玩NDS的朋友可以去看看http://www.ndsman.com/bbs,好像遇到了和天空一样的问题,被某个叫NDSBBS的网站盗链加恶意中伤。

浩联电子:http://www.591hl.com家乡的一个公司,感谢一个长期支持我的朋友 [m*],估计他不想在这里出名,嘻嘻

近日计划
集中精力研究AXLFilter,用IIS ISAPI FILTER彻底解决盗链问题,然后发布源代码,希望相关下载站与我联系测试盗链效果和防迅雷下载,概念代码将在第一时间发布。

我的联系方式:bigboyq[at]eviloctal[dot]com
点击下载

浅谈网络攻击检测技术

0

分类 : 系统安全 | 发表时间 13-06-2006

信息来源:BackLi’blog

保证信息系统安全的经典手段是“存取控制”或“访问控制”,但无论在理论上还是在实践中,这种手段都不能彻底填补一个系统的安全漏洞,也还没有一种切实可行的办法解决合法用户在通过“身份鉴别”或“身份认证”后滥用特权的问题。攻击检测技术就像治安巡逻队,专门注重于发现形迹可疑者。

  计算机网络技术的发展和应用对人类生活方式的影响越来越大。通过Internet网连接到几乎世界上任何一台计算机。因此,传统的安全域的概念也已经发生了深刻的变化,边界变得模糊了,网络系统管理员再也不能满足于守住安全边界了;也不再有信心保护敏感信息万无一失。越来越多的证据表明计算机信息系统的安全性是十分脆弱的。基于计算机、网络的信息系统的安全问题已经成为非常严重的问题。

  一、存取控制与攻击检测:站岗与巡逻

  保证信息系统安全的经典手段是“存取控制”或“访问控制”,这种手段在经典的以及现代的安全理论中都是实行系统安全策略的最重要的手段。但迄今为止,软件工程技术还没有达到A2级所要求的形式生成或证明一个系统的安全体系的程度,所以不可能百分之百地保证任何一个系统(尤其是底层系统)中不存在安全漏洞。而且,无论在理论上还是在实践中,试图彻底填补一个系统的安全漏洞都是不可能的,也还没有一种切实可行的办法解决合法用户在通过“身份鉴别”或“身份认证”后滥用特权的问题。打个比方,经典的安全体系就像一座城池,身份认证就好像进城时的查路条一样,着重点在于防范奸细混入;但是这种措施对于城池的安全仍是远远不够的。

  攻击检测作为其他经典手段的补充和加强,是任何一个安全系统中不可或缺的最后一道防线;攻击检测可以分为被动、非在线地发现和实时、在线地发现计算机网络系统中的攻击者两种方法。从大量非法入侵或计算机盗窃案例可以清晰地看到,计算机系统的最基本防线“存取控制”或“访问控制”,在许多场合不是防止外界非法入侵和防止内部用户攻击的绝对无懈可击的屏障。大量攻击成功的案例是由于系统内部人员不恰当地或恶意地滥用特权而导致的。攻击检测技术则类似于治安巡逻队,专门注重于发现形迹可疑者,信息系统的攻击者很有可能通过了城门的身份检查,或者爬越了城墙而混入城中;这时要想进一步加强信息系统的安全强度,就需要增派一支巡逻队,专门负责检查在城市中鬼鬼祟祟行动可疑的人员。

  攻击检测提供了一种机制,对合法用户而言能够在一定程度上使他们为其失误或非法行为负责,从而增强他们的责任感。对非法进入的攻击者而言则意味着增强了纠察力度,行使着公安局、检察院的职责。攻击检测具有最后防线性质的防范能力,或许是用来发现合法用户滥用特权的唯一方法,而且完善的攻击检测还能用具有法律效力的方式证明一个受到怀疑的人是否有罪。

  早期中大型的计算机系统中都收集审计信息来建立跟踪文件,这些审计跟踪的目的多是为了性能测试或计费,因此对攻击检测提供的有用信息比较少。
二、攻击检测技术

  1.攻击分类

  在信息系统中,一般至少应当考虑如下三类安全威胁:外部攻击、内部攻击和行为滥用。攻击者来自该计算机系统的外部时称作外部攻击;当攻击者就是那些有权使用计算机,但无权访问某些特定的数据、程序或资源的人企图越权使用系统资源时视为内部攻击,包括假冒者(即那些使用其他合法用户的身份和口令的人)、秘密使用者(即那些有意逃避审计机制和存取控制的人员);特权滥用者也是计算机系统资源的合法用户,表现为有意或无意地滥用他们的特权。

  通过审计试图登录的失败记录可以发现外部攻击者的攻击企图;通过观察试图连接特定文件、程序和其他资源的失败记录可以发现内部攻击者的攻击企图,如可通过比较为每个用户单独建立的行为模型和特定的行为来检测发现假冒者;但要通过审计信息来发现那些权利滥用者往
往是很困难的。

  基于审计信息的攻击检测特别难于防范具备较高优先特权的内部人员的攻击,因为攻击者可通过使用某些系统特权或调用比审计本身更低级的操作来逃避审计。对于那些具备系统特权的用户,需要审查所有关闭或暂停审计功能的操作,通过审查被审计的特殊用户、或者其他的审计参数来发现。审查更低级的功能,如审查系统服务或核心系统调用通常比较困难,通用的方法很难奏效,需要专用的工具和操作才能实现。总之,为了防范隐秘的内部攻击需要在技术手段以外确保管理手段行之有效,技术上则需要监视系统范围内的某些特定的指标(如CPU、内存和磁盘的活动),并与通常情况下它们的历史记录进行比较,以期发现之。

  2.攻击检测技术分类

  基于计算机系统审计跟踪信息设计和实现的系统安全自动分析或检测工具是最为自然朴素的攻击检测技术。可以从审计系统筛选出涉及安全的信息。其思路与流行的数据挖掘(Data Mining)技术极其类似。

  基于审计的自动分析检测工具可以是脱机的,也可以是联机或在线的。分析工具实时地对审计跟踪文件提供的信息进行同步处理,当有可疑的入侵行为时,系统提供实时的警报,在攻击发生时就能提供攻击者的有关信息。

  对于信息系统安全强度而言,联机或在线的攻击检测是比较理想的,能够在案发现场及时发现攻击行为,有利于及时采取对抗措施,使损失降低到最低限度。同时也为抓获攻击犯罪分子提供有力的证据。但是,联机的或在线的攻击检测系统所需要的系统资源,几乎随着系统内部活动数量的增长呈几何级数增长。

  3.攻击检测方法

  (1)基于审计的攻击检测

  基于审计信息的攻击检测工具以及自动分析工具可以向系统安全管理员报告计算机系统活动的评估报告,通常是脱机的、滞后的。

  对攻击的实时检测系统的工作原理是基于对用户历史行为的建模,以及在早期的证据或模型的基础之上。审计系统实时地检测用户对系统的使用情况,根据系统内部保持的用户行为的概率统计模型进行监测,当发现有可疑的用户行为发生时,保持跟踪并监测该用户的行为。

  系统应具备处理自适应的用户参数的能力。能够判断使用行为的合法或可疑。系统应当能够避免“肃反扩大/缩小化”的问题。这种办法同样适用于检测程序的行为以及对数据资源(如文件或数据库)的存取行为。
(2)基于神经网络的攻击检测技术

  如上所述,基于审计统计数据的攻击检测系统,具有一些天生的弱点,因为用户的行为可以是非常复杂的,所以想要准确匹配一个用户的历史行为和当前的行为是相当困难的。错发的警报往往来自于对审计数据的统计算法所基于的不准确或不贴切的假设。SRI的研究小组利用和发展神经网络技术来进行攻击检测。神经网络可能用于解决传统的统计分析技术所面临的以下几个
问题:

  ●难于建立确切的统计分布
  ●难于实现方法的普适性
  ●算法实现比较昂贵
  ●系统臃肿难于剪裁

  目前,神经网络技术提出了对基于传统统计技术的攻击检测方法的改进方向,但尚不十分成熟,所以传统的统计方法仍将继续发挥作用,也仍然能为发现用户的异常行为提供相当有参考价值的信息。

  (3)基于专家系统的攻击检测技术

  进行安全检测工作自动化的另外一个值得重视的研究方向就是基于专家系统的攻击检测技术,即根据安全专家对可疑行为的分析经验来形成一套推理规则,然后再在此基础之上构成相应的专家系统。由此专家系统自动进行对所涉及的攻击操作的分析工作。

  所谓专家系统是基于一套由专家经验事先定义的规则的推理系统。例如,在数分钟之内某个用户连续进行登录,且失败超过三次就可以被认为是一种攻击行为。类似的规则在统计系统似乎也有,同时应当说明的是基于规则的专家系统或推理系统也有其局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对系统的最危险的威胁则主要是来自未知的安全漏洞。实现一个基于规则的专家系统是一个知识工程问题,而且其功能应当能够随着经验的积累而利用其自学习能力进行规则的扩充和修正。

  (4)基于模型推理的攻击检测技术

  攻击者在入侵一个系统时往往采用一定的行为程序,如猜测口令的程序,这种行为程序构成了某种具有一定行为特征的模型,根据这种模型所代表的攻击意图的行为特征,可以实时地检测出恶意的攻击企图,尽管攻击者并不一定都是恶意的。用基于模型的推理方法人们能够为某些行为建立特定的模型,从而能够监视具有特定行为特征的某些活动。根据假设的攻击脚本,这种系统就能检测出非法的用户行为。一般为了准确判断,要为不同的入侵者和不同的系统建立特定的攻击脚本。

  当有证据表明某种特定的攻击模型发生时,系统应当收集其他证据来证实或者否定攻击的真实,以尽可能的避免错报。

  为了防止过多的不相干信息的干扰,用于安全目的的攻击检测系统在审计系统之外一般还配备适合系统安全策略的信息采集器或过滤器。同时,还应当充分利用来自其它信息源的信息。在某些系统内可以在不同的层次进行审计跟踪。如有些系统的安全机制中采用三级审计跟踪,包括审计操作系统核心调用行为的跟踪、审计用户和操作系统界面级行为的跟踪、和审计应用程序内部行为的跟踪。

  总之,和经典安全措施相同,任何一种攻击检测措施都不能视之为一劳永逸的,必须配合有效的管理和组织措施,形成立体的和纵深有序的安全防御体系。

预防DDoS攻击的十项安全策略

0

分类 : 系统安全 | 发表时间 13-06-2006

简单地说,掌握所有可能导致被入侵和被用于实施拒绝服务攻击的原因和安全漏洞是非常复杂的。详细地说,没有简单和专门的方法保护不受到这些攻击,而只能尽可能地应用各种安全和保护策略。对于每个面临安全威胁的系统,这里列出了一些简单易行和快速的安全策略以保护免受这些攻击。
  对于面临拒绝服务攻击的目标或潜在目标,应该采取的重要措施:
  1、消除FUD心态
  FUD的意思是Fear(恐惧)、Uncerntainty(猜测)和Doubt(怀疑)。最近发生的攻击可能会使某些人因为害怕成为攻击目标而整天担心受怕。其实必须意识到可能会成为拒绝服务攻击目标的公司或主机只是极少数,而且多数是一些著名站点,如搜索引擎、门户站点、大型电子商务和证券公司、IRC服务器和新闻杂志等。如果不属于这类站点,大可不必过于担心成为拒绝服务攻击的直接目标。
  2、要求与ISP协助和合作
  获得你的主要互联网服务供应商(ISP)的协助和合作是非常重要的。分布式拒绝服务(DDoS)攻击主要是耗用带宽,单凭你自己管理网络是无法对付这些攻击的。与你的ISP协商,确保他们同意帮助你实施正确的路由访问控制策略以保护带宽和内部网络。最理想的情况是当发生攻击时你的ISP愿意监视或允许你访问他们的路由器。
  3、优化路由和网络结构
  如果你管理的不仅仅是一台主机,而是网络,就需要调整路由表以将拒绝服务攻击的影响减到最小。为了防止SYN flood攻击,应设置TCP侦听功能。详细资料请参阅相关路由器技术文档。另外禁止网络不需要使用的UDP和ICMP包通过,尤其是不应该允许出站ICMP“不可到达”消息。
  4、优化对外开放访问的主机
  对所有可能成为目标的主机都进行优化。禁止所有不必要的服务。另外多IP主机也会增加攻击者的难度。建议在多台主机中使用多IP地址技术,而这些主机的首页只会自动转向真正的web服务器。
  5、正在受到攻击时,必须立刻应用对应策略。
  尽可能迅速地阻止攻击数据包是非常重要的,同时如果发现这些数据包来自某些ISP时应尽快和他们取得联系。千万不要依赖数据包中的源地址,因为它们在DoS攻击中往往都是随机选择的。是否能迅速准确地确定伪造来源将取决于你的响应动作是否迅速,因为路由器中的记录可能会在攻击中止后很快就被清除。
  对于已被或可能被入侵和安装DDoS代理端程序的主机,应该采取的重要措施:
  6、消除FUN心态
  作为可能被入侵的对象,没必要太过紧张,只需尽快采取合理和有效的措施即可。现在的拒绝服务攻击服务器都只被安装到Linux和Solaris系统中。虽然可能会被移植到*BSD*或其它系统中,但只要这些系统足够安全,系统被入侵的可能性不大。
  7、确保主机不被入侵和是安全的
  现在互联网上有许多旧的和新的漏洞攻击程序。以确保你的服务器版本不受这些漏洞影响。记住,入侵者总是利用已存在的漏洞进入系统和安装攻击程序。系统管理员应该经常检查服务器配置和安全问题,运行最新升级的软件版本,最重要的一点就是只运行必要的服务。如果能够完全按照以上思路,系统就可以被认为是足够安全,而且不会被入侵控制。
  8、周期性审核系统
  必须意识到你要对自己管理的系统负责。应该充分了解系统和服务器软件是如何工作的,经常检查系统配置和安全策略。另外还要时刻留意安全站点公布的与自发管理的操作系统及软件有关的最新安全漏洞和问题。
  9、检查文件完整性
  当确定系统未曾被入侵时,应该尽快这所有二进制程序和其它重要的系统文件产生文件签名,并且周期性地与这些文件比较以确保不被非法修改。另外,强烈推荐将文件检验和保存到另一台主机或可移动介质中。这类文件/目录完整性检查的免费工具(如tripwire等)可以在许多FTP站点上下载。当然也可以选择购买商业软件包。
  10、发现正在实施攻击时,必须立刻关闭系统并进行调查
  如果监测到(或被通知)网络或主机正实施攻击,应该立刻关闭系统,或者至少切断与网络的连接。因为这些攻击同时也意味着入侵者已几乎完全控制了该主机,所以应该进行研究分析和重新安装系统。建议联系安全组织。。必须记往,将攻击者遗留在入侵主机中的所有程序和数据完整地提供给安全组织或专家是非常重要,因为这能帮助追踪攻击的来源。

入侵网站的各种漏洞的利用

0

分类 : 系统安全 | 发表时间 13-06-2006

信息来源:慕容小雨’s blog

慕容小雨何许人也,偶不认识,不过听neeao说过多次,再从作品上看,当非凡人也!呵

各种漏洞的利用和一些搜索参数
说到漏洞,首先应该提到的就是动网的上传漏洞了。

“洞网”漏洞拉开了上传漏洞文件的序幕,其他系统的上
传漏洞接踵而来!

asp动网论坛漏洞分析

1、这个漏洞不算太严重,用过动网论坛的人都知道,发帖时直接写javascript会被过滤拆分,写http会自动加上链接,漏洞就在此,在这两个地方变通一下,把两个单词的某个字母换成编码形式,然后系统再对应地解码回字母,就达到了避免被过滤的目的。例子说明一下,在发帖时写入[img]javas&#x63ript:window.open(‘htt&#x70://www.fwcn.com’,”)[/img] 很清楚地看到,#x63解码的字母是”c”,#x70解码的字母是”p”,&起到连接作用,最后加上[img],使JS被触发,如果论坛支持flash插入,用[swf]也可。利用这个漏洞可以搞些恶作剧,写上诱人的主题,点进去结果是他的主页(骗点击率,作广告),甚至更绝,连到一个有病毒、木马的网页上,让你直想骂娘。这个漏洞存在于动网的各个版本,包括较新的0519版,覆盖面积之广让人瞠目,各人认为应该对某些非法字符进行检测剔除,而非简简单单地拆分了事,真希望动网开发者能尽早补上这漏洞。

2、比起前者,第二个漏洞问题就大啦,利用该漏洞可以破解掉论坛上所有注册会员的密码(恐怖~~~),由于论坛管理员通常直接把论坛程序载下来梢加以美工就拿来使用了,图方便直接导致了漏洞的出现,我们也载一个回来,只要看一下动网的数据库,就知道了密码的字段为userpassword,接着例如要破一个名叫abc的用户密码,首先察看abc的用户资料,给出的连接是http://xxxxx/dispuser.asp?name=abc ,在dispuser.asp中,读取参数的语句是:username=trim(request(“name”)),数据库的查询的语句是: sql=”select * from [user] where username=’”&username&”‘”,看得出来, abc就是直接被作为了dispuer的一个参数username,另外,如果该用户不存在,程序就会给出提示,既然如此,我们就再写入个查询密码的条件,在where username=abc后面加上and userpassword=”******”,理论上这样就可以实现对密码的破解了,但这么破要破到何年何月,现在就要轮到VBS函数大显身手了,可以先用len函数试出用户的密码位数,地址就这么写http://xxxxx/dispuser.asp?name=abc'%20and%20len(userpassword)=5%20and%20’1′=’1,这么看可能不好理解,放到sql语句里其实就是这副样子:sql=”select * from [User] where username=’abc’ and len(UserPassword)=5 and ’1′=’1′”,现在明白点了吧,%20是空格,abc后面的单引号和’1′=’1里的单引号都是为了和sql语句相匹配。奇怪,该用户不存在,喔?那就说明符合这个条件的用户没有,继续,把5换成6,7,8,依此类推,只要能显示出用户资料了,就说明密码位数猜对了。接下来要做的就是试每位的密码是多少了,继续要用到VBS,可以用left或right或mid函数,http://xxxxx/dispuser.asp?name=abc'%20and%20left(userpassword,1)=’a,如果猜对了就给出用户资料,猜对了就给出该用户不存在的提示,这样子还是嫌太慢,那就在外面再套个asc函数,http://xxxxx/dispuser.asp?name=abc'%20and%20asc(mid(userpassword,1,1))>’50 试出用户密码的ASCII码是否大于50,不断地缩小范围,相信很快就能将范围缩小至个位数,看到这里你是否惊出了一身冷汗,起码我是如此,*几个函数的灵活运用,保守地说,不出半小时就能破解出密码。真是不幸中的大幸,动网开发者在后来的05**版后使用了MD5的加密,这下子总算放心了,但介于国内还有许多地方在使用老版本的动网论坛(包括一个小有名气的flash站点)

3 、动网SQL语句漏洞
此漏洞针对动网SQL版本。
测试方法:在http://ip/bbs/admin_index.asp 输入用户名是’or”=’ 密码也是这个
这样可以跳过认证
原理:利用SQL语法。输入的密码和ID就成为一个合法的SQL语句,直接跳过认证。
此漏洞并不针对动网。很多SQL的ASP都会有这个漏洞

4、动网论坛sp2漏洞 (此漏洞影响范围甚大,动网官方站、黑客防线、安全基地都曾因此被黑过,具体资料大家可以在百度搜一下)
上传漏洞路径:reg_upload.asp及upfile.asp

青创文章系统

打开google 输入.tw qcdn (或者是去百度搜索 Powered by:QCDN_NEWS 但大多数是中国的)
青创文章系统
上传漏洞。在网址后加/admin_upfile.asp 如果出现。
Microsoft VBScript 磅︽顶琿岿粇 岿粇 ’800a01b6′
ンぃや穿妮┦┪よ猭: ‘form’
/article/admin_upfile.asp, 21
就代表已经有90%以上的希望了
桂林老兵的上传工具上传木马
入侵的時候發現admin_upfile.asp改了。你也可以改成user_upfile.asp也上傳傳馬馬。還有一個方法就是把admin_upfile.asp user_upfile.asp加到注入工裏邊

青创文章管理系统注入功击
关键字”list.asp?unid=”
工具:
  1、NBSI好像大部分黑客站点都有得下。
  2、MD5Crack2,破解MD5加密的软件(磊子推荐:dos下DV.exe比较好用)
第一次检测的时候,会报告”暂未检测到注入漏洞”;然后在”特征字符”输入”Unid”
(提示:”Unid”中的” U “一定要是大写的

“飞龙文章管理系统” 漏洞

飞龙文章管理系统 Ver 2.0 Build 20040620 正式版漏洞利用
搜索”Article.asp?ArtID=”关键字
漏洞文件在
admin_upfile.asp
user_upfile.asp
这两个文件”upfile.asp”
动网漏洞的再现
上传时cookie中加”ArtID=1111;”

phpwind 1.3.6 的论坛漏洞的利用
搜索关键字”POWER BY PHPWIND v1.3.6″

phpwind1.3.6论坛利用程序 “群共享”中有上传

保存后,木马地址为当前目录下的faq.php

在本机用如下表单进行提交:

METHOD=”POST”>




上传成功后的木马存在论坛目录下
直接访问就行!

漏洞集合

1)Co Net MiB Ver1.0~4.0 用’or’='or’登陆管理员(一个比较经典的漏洞)

2)ASP Calendar漏洞 请在google搜索Maintained with the Ocean12 ASP Calendar Manager v1.01这个信息,程序的默认数据库为o12cal.mdb(非MD5加密,明文保存)

3)六合彩漏洞 我们打开www.baidu.com或是www.google.com
在搜索里输入 请各位验证会员料
http://www.3589.com/tian/4login.asp把4login.asp改成conn.inc

<%DBPath=Server.MapPath("wz520#.mdb")
Set conn=Server.CreateObject(“ADODB.Connection”)
conn.Open “Driver={Microsoft Access Driver (*.mdb)};DBQ=”&DBPath%>

wz520#.mdb,他就是数据库了。#改成%23就可以下载数据库了

4)青创文章系统出现严重漏洞 在网址后加/admin_upfile.asp上传WEBSHELL

百度搜索 Powered by:QCDN_NEWS 台湾.tw qcdn。

还可以用%5c暴库,通杀

“list.asp?unid=” ” .tw/list.asp?unid= ” 存在注入 在”特征字符”输入”Unid”
(”Unid”中的” U “一定要是大写的)

5)自由动力3.6的软件上传过滤不严 用WinHex.exe和WSockExpert.exe修改上传木马

E时代驿站漏洞
百度搜索”E时代驿站”
漏洞利用页面 /upload.asp 用老
兵直接上传

沸腾新闻系统上传漏洞
搜索:沸腾展望新闻系统[核心:尘缘雅境]授权使用
漏洞:没有对空格进行严格的限制。
所以,我们直接选定要上传的asp木马,然后在后面加上空格
它的上传文件是UploadFaceOK.asp

尘缘雅境

在GOOGLE里搜索关键词: V1.0 ACCESS Finish,就会看
到出现了
一大堆
使用尘缘雅境系统的网站.比如说他的网站首页
是http://www.xx.com/asfq/index.asp,那么就要这样填写
http://www.xx.com/asfq/admin/uploadfaceok.asp,[漏洞目
录]:/asfq/admin
(注意一定要加上admin),[漏洞文件]一般不用改,不过有
些老版的
尘缘系统
的漏洞文件是uploadok.asp,如果uploadfaceok.asp不成功
再改

OFSTAR论坛漏洞利用程序(群共享中)
搜索: powered by ofstar.net
1:输入管理员用户名 2:输入任意一个帖子的路径!

3:单击获取密码,可以截取到管理员的MD5密码!是32位加密的!

4:单击直接登陆按钮!程序会自动构造Cookies进行登陆!单击管理栏的”超管”可直接进入后台!

上传木马: 选择后台的论坛管理=>风格摸版设置 插入以下代码! (其实上传shell部分和PHPWind一样)

然后使用提交页面提交“可以直接拿到shell!



无觅相关文章插件,快速提升流量