防溢出提权攻击的解决办法
程序员文章站
2022-10-01 09:38:52
在频频恶意攻击用户、系统漏洞层出不穷的今天,作为网络管理员、系统管理员虽然在服务器的安全上都下了不少功夫,诸如及时打上系统安全补丁、进行一些常规的安全配置,但有时仍不... 09-08-08...
在频频恶意攻击用户、系统漏洞层出不穷的今天,作为网络管理员、系统管理员虽然在服务器的安全上都下了不少功夫,诸如及时打上系统安全补丁、进行一些常规的安全配置,但有时仍不安全。因此必须恶意用户入侵之前,通过一些系列安全设置,来将入侵者们挡在“安全门”之外,下面就将最简单、最有效的防(overflow)溢出、本地提供权限攻击类的解决办法给大家分享。
一、如何防止溢出类攻击
1、尽最大的可能性将系统的漏洞补丁都打完,最好是比如microsoft windows server系列的系统可以将自动更新服务打开,然后让服务器在您指定的某个时间段内自动连接到microsoft update网站进行补丁的更新。如果您的服务器为了安全起见 禁止了对公网外部的连接的话,可以用microsoft wsus服务在内网进行升级。
2、停掉一切不需要的系统服务以及应用程序,最大限能的降底服务器的被攻击系数。比如前阵子的msdtc溢出,就导致很多服务器挂掉了。其实如果web类服务器根本没有用到msdtc服务时,您大可以把msdtc服务停掉,这样msdtc溢出就对您的服务器不构成任何威胁了。
3、启动tcp/ip端口的过滤,仅打开常用的tcp如21、80、25、110、3389等端口;如果安全要求级别高一点可以将udp端口关闭,当然如果这样之后缺陷就是如在服务器上连外部就不方便连接了,这里建议大家用ipsec来封udp。在协议筛选中"只允许"tcp协议(协议号为:6)、udp协议(协议号为:17)以及rdp协议(协议号为:27)等必需用协议即可;其它无用均不开放。
4、启用ipsec策略:为服务器的连接进行安全认证,给服务器加上双保险。如③所说,可以在这里封掉一些危险的端品诸如:135 145 139 445 以及udp对外连接之类、以及对通读进行加密与只与有信任关系的ip或者网络进行通讯等等。(注:其实防反弹类木马用ipsec简单的禁止udp或者不常用tcp端口的对外访问就成了,关于ipsec的如何应用这里就不再敖续,可以到服安讨论search "ipsec",就 会有n多关于ipsec的应用资料..)
5、删除、移动、更名或者用访问控制表列access control lists (acls)控制关键系统文件、命令及文件夹:
(1).黑客通常在溢出得到shell后,来用诸如net.exe net1.exe ipconfig.exe user.exe query.exe regedit.exe regsvr32.exe 来达到进一步控制服务器的目的如:加账号了,克隆管理员了等等;这里可以将这些命令程序删除或者改名。(注意:在删除与改名时先停掉文件复制服务(frs)或者先将 %windir%\system32\dllcache\下的对应文件删除或改名。)
(2).也或者将这些.exe文件移动到指定的文件夹,这样也方便以后管理员自己使用。
(3).访问控制表列acls控制:找到%windir%\system32下找到cmd.exe、cmd32.exe net.exe net1.exe ipconfig.exe tftp.exe ftp.exe user.exe reg.exe regedit.exe regedt32.exe regsvr32.exe 这些黑客常用的文件,在“属性”→“安全”中对他们进行访问的acls用户进 行定义,诸如只给administrator有权访问,如果需要防范一些溢出攻击、以及溢出成功后对这些文件的非法利用,那么只需要将system用户在acls中进行拒绝访问即可。
(4).如果觉得在gui下面太麻烦的话,也可以用系统命令的cacls.exe来对这些.exe文件的acls进行编辑与修改,或者说将他写成一个.bat批处理 文件来执行以及对这些命令进行修改。(具体用户自己参见cacls /? 帮助进行,由于这里的命令太多就不一一列举写成批处理代码给各位了!!)
(5).对磁盘如c/d/e/f等进行安全的acls设置从整体安全上考虑的话也是很有必要的,另外特别是win2k,对winnt、winnt\system、document and setting等文件夹。
6、进行注册表的修改禁用命令解释器: (如果您觉得用⑤的方法太烦琐的话,那么您不防试试下面一劳永逸的办法来禁止cmd的运行,通过修改注册表,可以禁止用户使用命令解释器(cmd.exe)和运行批处理文件(.bat文件)。具体方法:新建一个双字节(reg_dword)执行 hkey_current_user\software\policies\ microsoft\windows\system\disablecmd,修改其值为1,命令解释器和批处理文件都不能被运行。修改其值为2,则只是禁止命令解释器的运行,反之将值改为0,则是打开cms命令解释器。如果您赚手动太麻烦的话,请将下面的代码保存为*.reg文件,然后导入。
windows registry editor version 5.00
[hkey_current_user\software\policies\microsoft\windows\system]
"disablecmd"=dword:00000001
7、对一些以system权限运行的系统服务进行降级处理。(诸如:将serv-u、imail、iis、php、mssql、mysql等一系列以system权限运行的服务或者应用程序换成其它administrators成员甚至users权限运行,这样就会安全得多了...但前提是需要对这些基本运行状态、调用api等相关情况较为了解. )
其实,关于防止如overflow溢出类攻击的办法除了用上述的几点以外,还有n多种办法:诸如用组策略进行限制,写防护过滤程序用dll方式加载windows到相关的shell以及动态链接程序之中这类。当然自己写代码来进行验证加密就需要有相关深厚的win32编程基础了,以及对shellcode较有研究;由于此文仅仅是讨论简单的解决办法,因此其它办法就不在这里详述了。
二、如何防止溢出获取shell后对系统的进一步入侵
1、 在做好1中上述的工作之后,基本上可以防目骇客在溢出之后得到shell了;因为即使overflow溢出成功,但在调用cmdshell、以及对外联接时就卡了。 (为什么呢,因为:1.溢出后程序无法再调用到cmdshll已经禁止system访问cmd.exe了。2.溢出之后在进行反弹时已经无法对外部ip进行连接了。所以,基本上要能过system权限来反弹shell就较困难的了...)
2、 当然世界上是不存在绝对的安全的,假设入侵者在得到了用户的shell之后,做些什么呢?一般入侵者在在得到shell之后,就会诸如利用系统命令加账号了 通过tftp、ftp、vbs等方式传文件了等等来达到进一步控制服务器。这里通过1上述的办法对命令进行了限制,入侵者是没有办法通过tftp、ftp来传文件了,但他们仍然可以能过echo写批处理,用批处理通过脚本bat/vbs/vba等从web上下载文件,以及修改其它盘类的文件等潜在破坏行为。所以用户需要 将echo命令也限制以及将其它盘的system写、修改文件的权限进行处理。以及将vbs/vba类脚本以及xmlhttp等组件进行禁用或者限制system的运行权。这样的话别人得到shell也无法对服务器上的文件进行删除以及进行步的控制系统了;以及本地提权反弹shell了。
一、如何防止溢出类攻击
1、尽最大的可能性将系统的漏洞补丁都打完,最好是比如microsoft windows server系列的系统可以将自动更新服务打开,然后让服务器在您指定的某个时间段内自动连接到microsoft update网站进行补丁的更新。如果您的服务器为了安全起见 禁止了对公网外部的连接的话,可以用microsoft wsus服务在内网进行升级。
2、停掉一切不需要的系统服务以及应用程序,最大限能的降底服务器的被攻击系数。比如前阵子的msdtc溢出,就导致很多服务器挂掉了。其实如果web类服务器根本没有用到msdtc服务时,您大可以把msdtc服务停掉,这样msdtc溢出就对您的服务器不构成任何威胁了。
3、启动tcp/ip端口的过滤,仅打开常用的tcp如21、80、25、110、3389等端口;如果安全要求级别高一点可以将udp端口关闭,当然如果这样之后缺陷就是如在服务器上连外部就不方便连接了,这里建议大家用ipsec来封udp。在协议筛选中"只允许"tcp协议(协议号为:6)、udp协议(协议号为:17)以及rdp协议(协议号为:27)等必需用协议即可;其它无用均不开放。
4、启用ipsec策略:为服务器的连接进行安全认证,给服务器加上双保险。如③所说,可以在这里封掉一些危险的端品诸如:135 145 139 445 以及udp对外连接之类、以及对通读进行加密与只与有信任关系的ip或者网络进行通讯等等。(注:其实防反弹类木马用ipsec简单的禁止udp或者不常用tcp端口的对外访问就成了,关于ipsec的如何应用这里就不再敖续,可以到服安讨论search "ipsec",就 会有n多关于ipsec的应用资料..)
5、删除、移动、更名或者用访问控制表列access control lists (acls)控制关键系统文件、命令及文件夹:
(1).黑客通常在溢出得到shell后,来用诸如net.exe net1.exe ipconfig.exe user.exe query.exe regedit.exe regsvr32.exe 来达到进一步控制服务器的目的如:加账号了,克隆管理员了等等;这里可以将这些命令程序删除或者改名。(注意:在删除与改名时先停掉文件复制服务(frs)或者先将 %windir%\system32\dllcache\下的对应文件删除或改名。)
(2).也或者将这些.exe文件移动到指定的文件夹,这样也方便以后管理员自己使用。
(3).访问控制表列acls控制:找到%windir%\system32下找到cmd.exe、cmd32.exe net.exe net1.exe ipconfig.exe tftp.exe ftp.exe user.exe reg.exe regedit.exe regedt32.exe regsvr32.exe 这些黑客常用的文件,在“属性”→“安全”中对他们进行访问的acls用户进 行定义,诸如只给administrator有权访问,如果需要防范一些溢出攻击、以及溢出成功后对这些文件的非法利用,那么只需要将system用户在acls中进行拒绝访问即可。
(4).如果觉得在gui下面太麻烦的话,也可以用系统命令的cacls.exe来对这些.exe文件的acls进行编辑与修改,或者说将他写成一个.bat批处理 文件来执行以及对这些命令进行修改。(具体用户自己参见cacls /? 帮助进行,由于这里的命令太多就不一一列举写成批处理代码给各位了!!)
(5).对磁盘如c/d/e/f等进行安全的acls设置从整体安全上考虑的话也是很有必要的,另外特别是win2k,对winnt、winnt\system、document and setting等文件夹。
6、进行注册表的修改禁用命令解释器: (如果您觉得用⑤的方法太烦琐的话,那么您不防试试下面一劳永逸的办法来禁止cmd的运行,通过修改注册表,可以禁止用户使用命令解释器(cmd.exe)和运行批处理文件(.bat文件)。具体方法:新建一个双字节(reg_dword)执行 hkey_current_user\software\policies\ microsoft\windows\system\disablecmd,修改其值为1,命令解释器和批处理文件都不能被运行。修改其值为2,则只是禁止命令解释器的运行,反之将值改为0,则是打开cms命令解释器。如果您赚手动太麻烦的话,请将下面的代码保存为*.reg文件,然后导入。
windows registry editor version 5.00
[hkey_current_user\software\policies\microsoft\windows\system]
"disablecmd"=dword:00000001
7、对一些以system权限运行的系统服务进行降级处理。(诸如:将serv-u、imail、iis、php、mssql、mysql等一系列以system权限运行的服务或者应用程序换成其它administrators成员甚至users权限运行,这样就会安全得多了...但前提是需要对这些基本运行状态、调用api等相关情况较为了解. )
其实,关于防止如overflow溢出类攻击的办法除了用上述的几点以外,还有n多种办法:诸如用组策略进行限制,写防护过滤程序用dll方式加载windows到相关的shell以及动态链接程序之中这类。当然自己写代码来进行验证加密就需要有相关深厚的win32编程基础了,以及对shellcode较有研究;由于此文仅仅是讨论简单的解决办法,因此其它办法就不在这里详述了。
二、如何防止溢出获取shell后对系统的进一步入侵
1、 在做好1中上述的工作之后,基本上可以防目骇客在溢出之后得到shell了;因为即使overflow溢出成功,但在调用cmdshell、以及对外联接时就卡了。 (为什么呢,因为:1.溢出后程序无法再调用到cmdshll已经禁止system访问cmd.exe了。2.溢出之后在进行反弹时已经无法对外部ip进行连接了。所以,基本上要能过system权限来反弹shell就较困难的了...)
2、 当然世界上是不存在绝对的安全的,假设入侵者在得到了用户的shell之后,做些什么呢?一般入侵者在在得到shell之后,就会诸如利用系统命令加账号了 通过tftp、ftp、vbs等方式传文件了等等来达到进一步控制服务器。这里通过1上述的办法对命令进行了限制,入侵者是没有办法通过tftp、ftp来传文件了,但他们仍然可以能过echo写批处理,用批处理通过脚本bat/vbs/vba等从web上下载文件,以及修改其它盘类的文件等潜在破坏行为。所以用户需要 将echo命令也限制以及将其它盘的system写、修改文件的权限进行处理。以及将vbs/vba类脚本以及xmlhttp等组件进行禁用或者限制system的运行权。这样的话别人得到shell也无法对服务器上的文件进行删除以及进行步的控制系统了;以及本地提权反弹shell了。
上一篇: 一个黑客所需的基本技能
下一篇: 3DSMAX打造超酷的逼真变形金刚