本文目录一览:
- 1、内网渗透-远控类软件利用
- 2、Windows之hash利用小结
- 3、内网渗透-常用工具免杀
- 4、横向渗透之Pass The Hash
- 5、用Powershell框架Empire进行内网域渗透(一)
- 6、网络安全工程师要学些什么?
内网渗透-远控类软件利用
对渗透中遇到的远控类软件的利用方式整理。
操作系统:windows server 2012
中间件:tomcat
杀软:卫士+杀毒
默认权限:administrator
实战中经常遇到的一款远控软件,用户数量高。
可以通过ID和密码进行无人值守访问。
进程信息:
利用场景:拿到webshell权限,想上线cs,发现主机存在杀软,bypass失败。
通过查看进程信息发现存在Teamviewer。
管理员在线。
利用获取到的密码成功连接到目标主机的桌面。
TeamViewer QuickSupport版
首次运行需要同意协议。
实战使用需要把首次运行同意协议步骤进行绕过,然后上传到目标主机运行,然后抓取密码连接,感兴趣的可以研究下。
利用场景:查看进程发现存在向日葵,寻找配置文件,破解本机验证码,连接向日葵。
进程信息:
向日葵在最近的更新中加强了加密机制,删除了config.ini中的encry_pwd(本机验证码)。
v11.1.2.38529之前的版本,连接信息保存在配置文件中,可进行解密。
向日葵默认配置文件路径:
解密脚本
pip3 install unicorn
利用场景:
1、杀软白名单策略,常规免杀方法无法绕过。
2、存在流量设备,常规frp,nps,cs,reGeorg等被ban,无法带入内网。
向日葵首次运行提示是否安装。
需要鼠标点击以绿色版运行
使用bypass方法绕过,上传SunloginClient.exe到靶机服务器运行。
查看绿色版配置文件
C:\ProgramData\Oray\SunloginClient\config.ini
使用脚本破解encry_pwd
识别码为:165034706
密码为:LlOa4Z
连接成功。
北京金万维科技有限公司开发的一款产品,分为客服端和客户端。
可以通过设置连接密码进行无人值守访问。
进程信息:
配置文件默认路径
uniqueid 为连接的id
connect_password= 为设置的连接密码加密hash
random_password= 为明文连接密码
2个密码都可以连接使用
默认安装后未设置连接密码,不支持无人值守访问。
特点:运行过程中动态加载配置文件
利用方式:直接在配置文件中添加连接密码,进行无人值守访问。
1、设置random_password=666666
重新连接,输入设置的密码信息。
连接成功。
2、设置random_password
本地搭建客户端,设置连接密码999999。
查看本地配置文件中加密后的hash为
connect_password=5eec351934af7678a852ade9efc74133
特点:只在开始运行时加载配置文件
无random_password只能通过修改connect_password连接。
利用方式:结束进程,修改配置文件,重新运行。
1、结束进程
2、修改配置文件内容
connect_password为5eec351934af7678a852ade9efc74133(999999)
3、重新启动即可用密码连接。
1、uac
非server服务器运行向日葵需要bypass uac
2、用户不在线的情况,需要密码登录。
这个点导致利用起来比较鸡肋,适用于隧道流量无法绕过等一些极端情况,可以选择免杀读密码/免杀加用户然后登录。
整理了最近遇到的几个内网远控存在利用的点,利用相对鸡肋,适用于某些极端情况下使用。
Windows之hash利用小结
攻击机:kali 2020(192.168.107.129)
DC:Windows Server 2012 R2(192.168.107.137)
msf已成功通过msf获取到DC的shell
刚获取的shell为普通用户权限,需要进行提权,然后获取hash
直接使用getsystem失败,使用ps命令查看当前进程及运行用户权限
可以看到所运行的进程皆为普通用户权限
这里为了方便,直接使用msf提供的模块,用于快速识别系统中可能被利用的漏洞:
具体原理参考: BypassUAC------使用EVENTVWR.EXE和注册表劫持实现“无文件”UAC绕过
成功绕过UAC获取shell:
通过进程注入获取system权限,并获取hash
原理:
哈希传递攻击是基于NTLM认证的一种攻击方式。哈希传递攻击的利用前提是我们获得了某个用户的密码哈希值,但是解不开明文。这时我们可以利用NTLM认证的一种缺陷,利用用户的密码哈希值来进行NTLM认证。在域环境中,大量计算机在安装时会使用相同的本地管理员账号和密码。因此,如果计算机的本地管理员账号密码相同,攻击者就能使用哈希传递攻击登录内网中的其他机器。
哈希传递攻击适用情况:
在工作组环境中:
在域环境中:
Metasploit下面有3个psexec模块都可以进行Hash传递利用
第一个模块(auxiliary/admin/smb/psexec_command):
缺点:只能运行单条命令,不支持网段格式批量验证
优点:奇怪的是其他普通用户的hash也可以执行系统命令,这个模块可能不属于hash传递的范畴?这个坑以后再来解,我太菜了,望大佬指点~
设置命令的时候可以配合exploit/multi/script/web_delivery从而获取meterpreter
在上面进行Hash传递的时候,只要后面的NTLM Hash是正确的,前面填写什么都是可以顺利登陆成功的。
第二个模块(exploit/windows/smb/psexec):
利用条件:
优点:该模块支持网段格式批量验证,成功后可直接获取meterpreter且为system权限,在实战中优先使用
第三个模块(exploit/windows/smb/psexec_psh):
使用powershell作为payload。这个模块也支持网段批量验证,这里就不再赘述了
当我们获得了内网中一台主机的NTLM哈希值,我们可以利用mimikatz对这个主机进行哈希传递攻击,执行命令成功后将会反弹回cmd窗口
mimikatz中pth功能的原理:
windows会在lsass中缓存hash值,并使用它们来ntlm认证,我们在lsass中添加包含目标账号hash的合法数据结构,就可以使用类似dir这些命令进行认证
目标主机:192.168.107.140
domain:SWS-PC
执行后会弹出cmd,执行以下命令即可远程连接:
创建计划任务反弹shell:
理论上来说是可行的,win7复现的时候,任务一直在运行,就是没结束,我也是醉了.....
当然这里使用powershell远程加载也是可以的,但由于环境因素无法复现
前提条件:获取到的beacon为system权限,user中带有*号的用户
在得到一个beacon的基础上,先在该网段portscan,探测存活主机后
选择View--Target--Login--psexec,可批量选择主机pth
个人觉得还是Msf好用,成功率更高一些
项目地址:
安装参考:
Kali安装步骤:
使用命令:
注意:这里的 IP 可以是单个IP也可以是IP段
如果命令使用失败,可能没安装其依赖项(坑点,我弄了两个小时。。。心态爆炸):
项目地址:
安装过程:
wmi内置在windows操作系统,用于管理本地或远程的 Windows 系统。wmiexec是对windows自带的wmic做了一些强化。攻击者使用wmiexec来进行攻击时,不会记录日志,不会写入到磁盘,具有极高的隐蔽性。
安装成功后,切换到examples目录下,执行如下命令:
exe版本:
项目地址:
执行命令类似
powershell版本:
项目地址:
注意:这里要先加载Invoke-WMIExec.ps1脚本,因为Invoke-TheHash 里要用到 Invoke-WMIExec方法
该命令执行后该进程会在后台运行,可以结合定时任务执行尝试反弹shell。
KB2871997 补丁将使本地帐号不再可以用于远程接入系统,不管是 Network logon 还是 Interactive login。其后果就是:无法通过本地管理员权限对远程计算机使用 Psexec、WMI、smbexec、IPC 等,也无法访问远程主机的文件共享等。
在安装了kb2871997 这个补丁后,常规的Pass The Hash已经无法成功。但administrator(SID=500) 账号例外,使用该账号的散列值依然可以进行哈希传递攻击。这里需要强调的是 SID=500 的账号。即使将administrator账号改名,也不会影响SID的值
普通用户测试:
前提:只适用于域环境,并且目标主机需要安装 KB2871997补丁
利用获得到的AES256或AES128进行Key攻击:
弹出cmd后,查看DC的共享文件夹:
这里也不知道算成功没有
详情请参考谢公子博客:
LocalAccountTokenFilterPolicy 值默认设置为 0 来禁止非administrator账号的远程连接(包括哈希传递攻击),但是administrator用户不受影响
将LocalAccountTokenFilterPolicy设置为1,就可以使用普通管理员账号进行哈希传递攻击
利用工具:hashcat
比如说密码为:admin888?
NTLM加密之后为:c4e51613d9ab888ac3d43538840b271c
hashcat具体用法参考: Hashcat的使用手册总结
这里可以看到成功破解出了密码:
当然也可以去cmd5等破解网站,有钱的话直接冲个会员多香啊
Pass The Hash(Key) 凭据传递攻击PTH
哈希传递攻击(Pass-the-Hash,PtH)
Windows用户密码的加密与破解利用
横向渗透之Pass The Hash
内网渗透-常用工具免杀
Mimikatz其实并不只有抓取口令这个功能,它还能够创建票证、票证传递、hash传递、甚至伪造域管理凭证令牌等诸多功能。由于mimikatz的使用说明网上资料很多,这里就不多加介绍了,随着这两年hw行动越来越多,企事业单位也都开始注重内网安全,有预算的会上全套的终端安全、企业版杀软或者EDR,就算没有预算的也会装个360全家桶或者主机卫士之类的,这也导致很多时候你的mimikatz可能都没法拷贝过去或者没有加载执行,拿了台服务器却横向移不动就尴尬了。因为这款工具特别出名所以被查杀的机率很大, 我们可以通过 github 上的开源代码对其进行源码免杀从而 bypass 反病毒软件。
Mimikatz 源代码下载
免杀步骤
替换 mimikatz 关键字 shenghuo
mimikatz 下的文件全部改为 shenghu
把项目里所有的文件注释去掉
/_ Benjamin DELPY gentilkiwi benjamin@gentilkiwi.com Licence : _/
打开红色框框内的内容,替换图标文件
出现 无法找到 v140 的生成工具(平台工具集 =“v140”),要选择自己安装的平台工具集
重新生成
生成的程序能够正确运行
成功过360
PrintSpoofer做免杀
printspoofer提权工具目前主流的提权工具之一,360 安全会自动查杀,其他杀毒软件并不会查杀。
源码下载地址:
将PrintSpoofer.cpp 里面的输出帮助文档全部清空
导入图标
重新生成,程序生成成功
成功过360
metasploit 是一款开源的安全漏洞检测工具,同时Metasploit 是免费的工具,因此安全工作人员常用 Metasploit 工具来检测系统的安全性。Metasploit Framework (MSF) 在 2003 年以开放源码方式发布,是可以自由获取的开发框架。 它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试、 shellcode 编写和漏洞研究提供了一个可靠平台。其中攻击载荷模块(Payload) , 在红队中是个香饽饽,使用这个模块生成的后门,不仅支持多种平台,而且 Metasploit 还有编码器模块(Encoders),生成后门前,对其进行编码转换,可以混 淆绕过一部分杀毒软件。
工具 Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup 下载地址
metasploit源码下载:metasploit-loader/master/src/main.c
选择:文件-新建项目-consoleApplication-c 项目
把winsock2.h 移动到windows.h 上 不然编译会出错。
将这四处的数字改为其他数字
设置攻击载荷,执行后成功上线
成功过360
生成python64位的shellcode
添加生成的shellcode
编译成程序
pyinstaller -F test.py —noconsole
此时还要做的就是更改图标,这里介绍一种方法
首先右击它,选择“添加到压缩文件”
在弹出来的一个“压缩文件名和参数”框中设置压缩文件格式为“ZIP”,压缩方式为“存储”,压缩选项为“创建自解压格式压缩文件”。
随后选择“高级”选项卡。选择了“高级”选项卡以后直接点击“自解压选项”
在设置选项卡中解压后运行对应程序
在模式选项卡中选择解压临时文件夹和全部隐藏
随后再选择“更新”选项卡,在覆盖方式中选择“覆盖所有文件”
最后选择“文本和图标”选项卡,在自定义自解压文件徽标和图标中选择“从文件加载自解压文件图标”,点击“浏览”,找到自己想要加载的图标文件后并打开
然后就点击确定(两次)就可以生成一个新的exe程序了。图标已经改变了,再运行测试一下
上传去目标主机,这里更改了程序名称
在线查杀
是很流行的编程语言,也可以用它来做一个加载器运行cobaltstrike的 shellcode,生成出来的 文件特别的小,可以很好地投递传输。
项目地址 用 vs2017 打开 sln 项目文件
选择 xorkryptor 生成编码器 用 cobalt strike生成 raw 二进制文件
encrypt.bin 就是经过编码后的文件
项目里面存有 Rsources 和 encrypt.bin 文件 事实上项目是没有这个文件夹和文 件所以在当前目录新建文件夹和将生成好的shellcode文件 encrypt.bin 复制到文 件夹里。右键选择编译文件即可。
此时文件正常
重新编译,成功生成后门程序
成功过360
成功上线
横向渗透之Pass The Hash
在上一章总结了windows抓取hash的一些方式。在实际场景中,我们需要更快的扩大战果,获取更多控制权限,以及定位域环境。
横向渗透:就是在得到一台主机的控制权限后,将该主机作为突破口、跳板,利用既有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限。
Pass The Hash 哈希传递简称PTH,可以在不需要明文密码的情况下,利用LM HASH和NTLM HASH直接远程登录。攻击者不需要花费时间来对hash进行爆破,在内网渗透里非常经典。
常常适用于域/工作组环境。
靶机:windows server 2008
IP:10.211.55.19
domain:workgroup
user:administrator
pass:cseroad@2008
NTLM-Hash:82c58d8cec50de01fd109613369c158e
psexec类工具大同小异,大部分工具都是通过psexec来执行的。原理是: 通过ipc$连接,将psexesvc.exe释放到目标机器,再通过服务管理SCManager远程创建psexecsvc服务,并启动服务。然后通过psexec服务运行命令,运行结束后删除该服务。
如:Metasploit psexec,Impacket psexec,pth-winexe,Empire Invoke-Psexec
缺点:容易被杀软检测到
优点:可以直接获取system权限
因为市面工具比较多,只kali就自带有很多。所以这里以好用、批量为准则选择了几款工具。
mimikatz中pth功能的原理:
windows会在lsass中缓存hash值,并使用它们来ntlm认证,我们在lsass中添加包含目标账号hash的合法数据结构,就可以使用类似dir这些命令进行认证。
正常访问server 2008 的盘符是需要用户名密码的。
在windows7上经过pth之后就不需要密码就可以远程连接。
将获取的hash添加进lsass中。
在windows 7 上执行以下命令:
执行后会弹出cmd。在cmd下执行 net use \\10.211.55.19\c$ 命令就可以远程连接。
扩展:
假如我们继续探测到10.211.55.8使用的是同一个hash值。我们尝试使用远程共享c盘和schtasks 定时计划任务执行获取一个session。
powershell.bat为
当重启10.211.55.8机器后,metasploit可得到session
笔者经常使用时的是这三个模块
以exploit/windows/smb/psexec模块为例
值得一说的是smbpass配置项支持明文密码也支持hash(LM-Hash:NTLM-Hash)
成功返回system权限。
CobalStrike 同样有psexec选项。
在得到一个beacon的基础上,先在该网段portscan,探测存活主机后。
选择View--Target--Login--psexec,可批量选择主机pth。
选择pth的用户名和hash值。
从执行的命令看得出依然利用的mimikatz。执行成功后返回system权限。
该工具可以对C段主机批量pth。
项目在 github
在kali上直接apt就可以安装
对工作组批量pth命令如下
测试的时候发现某些命令执行后没有回显。
更多资料参考:
CrackMapExec:域环境渗透中的瑞士军刀
红队测试工具-CrackMapExec-远程执行Windows命令
wmi内置在windows操作系统,用于管理本地或远程的 Windows 系统。wmiexec是对windows自带的wmic做了一些强化。攻击者使用wmiexec来进行攻击时,不会记录日志,不会写入到磁盘,具有极高的隐蔽性。
安装成功后,切换到examples目录下
运行命令为
先加载Invoke-WMIExec.ps1脚本,再加载Invoke-TheHash.ps1脚本,因为Invoke-TheHash 里要用到 Invoke-WMIExec方法
如果要执行系统命令。可以加-Command 参数
执行后该进程会在后台运行,可以结合定时任务执行尝试反弹shell。
在测试中发现,在打了kb2871997 这个补丁后,常规的Pass The Hash已经无法成功,但默认的Administrator(SID 500)账号例外,利用这个账号仍可以进行Pass The Hash远程ipc连接。
以上所有操作均针对的SID 500。
内网渗透之PTHPTTPTK
横向移动
丢掉PSEXEC来横向渗透
用Powershell框架Empire进行内网域渗透(一)
自从powershell在windows开始预装之后,就成为Windows内网渗透的好帮手,好处多多:天生免杀、无文件落地、 无日志(雾) 。
于是老外开发了 empire 框架,毕竟 cobalt strike 要收费的不是?
功能模块丰富,老外把内网[域]渗透中能用到的都整合进去了:内网探测,提权,凭据获取,横向移动,权限维持。模块那么多,不懂就 searchmodule 或者[tab]两下。
基于 debian 系的,如kali或者ubuntu都可以安装。
git clone
在执行安装脚本之前,建议修改软件源和 pip 源,避免因为网络问题安装失败。
sudo ./setup/install.sh
安装好后执行 ./empire 后就可以用了。
先查看可用的 Listener 有哪些?[tab]两下就出来了所有可用的。
通过 info 查看指定模块的配置信息
这里还是先使用http的监听,通过 set Port 8080 修改监听的端口, 2.x版必须同时设置 Host ,然后 execute 启动监听。
通过list命令查看正在运行的监听
可以通过usestager来生成文件,引诱对方运行,可以看到支持linux、Windows、osx。
这里我们选用launcher_bat,通过 info 查看可以配置的参数。
这里需要注意的是Listener的Name,必须跟前面启用的Listener的一致。
生成的文件内容是这样子的
其中那么一大段的powershell命令,跟 (Empire: listeners) launcher powershell test 的执行结果是一样的。这里先不关心怎么让其在别的机子上运行,那是另外的技术活。
用win7的cmd执行了那一串命令后,进程中可以看到有powershell.exe
执行 agents 命令查看回连的机子,然后 interact BNR1T9ZC 来与之进行交互。
通过 help 命令可以查看到在agent上可以执行很多命令。这里挑些重要的讲。
bypassuac ,顾名思义就是绕过uac的。除非你是本机的administrator,否则普通管理员都需要右键某个程序,然后选择 run as administrator 才能运行,这都是uac作的怪。
因为这里是用普通域用户权限执行的,连本机的普通管理员都不算,所以失败了。
sc,屏幕截图命令,可以通过这个了解机子上的人正在做什么。
我们看看usemodule还有哪些可用的模块?(有些模块需要对应权限才能成功运行)
输入 help agentcmds 可以看到可供使用的常用命令
执行 ipconfig 查看网卡信息(如果不在help列表中,那么会自动执行远程主机上的可用命令)
可以看到dns的ip是1.1.1.10,既是域控的ip
当你获得一个会话之后,又想要派生更多会话,怎么办?
使用 invoke_shellcode 来注入 meterpreter 的shellcode
metasploit先要设置一个 listener
然后empire执行
成功获取meterpreter会话(才怪, empire2.5 版本)
在session1建立到1.1.1.0/24网段的路由跳转
run autoroute -s 1.1.1.0/24
通过sesesion1打通网段后,可以看到域控服务器1.1.1.10开放的端口
使用ms17010成功获取meterpreter会话。
至此,域控拿下,可以开始漫游内网。(还是得靠metasploit,单一个empire做的事情很有限)
获取域管理员的明文凭据
用后渗透模块 credential_collector 收集可用的凭据
empire 可以直接使用 mimikatz 来获取凭据。 注意,此时客户端上powershell进程占用的cpu可达90%,会引起卡顿
creds 查看获取的凭据
利用pth来传递hash,用这个hash创建一个新的进程,可以看到新的进程id是3032
然后 credentials/tokens 查看不同用户的进程id
对指定进程steal_token之后,再去与agent交互就是域用户user的权限了。
用revtoself再切换回原来的权限(普通域用户权限太低做不了什么)
到这里尝试了好几个 situational_awareness/network/powerview 的模块返回的都是空结果,看来是需要域管理员才能执行成功。
碰巧域管理员也登陆这台机子,那么就能用他的权限做很多事情了。
也可以使用 usemodule management/psinject 进行切换,设置好ProcessId即可
现在我们又获得了一次域管理员权限,可以开始横向移动了。
先内网探测下可用的机子有哪些,使用了 situational_awareness 中的三个模块:
find_localadmin_access user_hunter get_domain_controller
又一次可以确定1.1.1.10就是域控所在了。用 lateral_movement/invoke_psexec 移动到域控服务器上面。
终于又回到了域控服务器,接下来要考虑的是如何导出域控上面的所有hash,并且维持权限。
网络安全工程师要学些什么?
网络安全工程师需要学服务漏洞扫描、程序漏洞分析检测、权限管理、入侵和攻击分析追踪、网站渗透、病毒木马防范、计算机语言等内容,还需要懂得网络安全产品的配置和使用。
网络安全工程师的工作职责:
一、主持项目网络安全产品的需求分析、项目可行性分析、技术评测、方案规划和搭建,提供相关技术支持;
二、设计满足顾客和网络安全性要求的网络安全解决方案;
三、通过数据分析和其他相关工具,排查解决项目实施过程中的复杂网络故障问题;
四、根据公司流程,规范化的进行项目实施并编写输出实施报告;
五、处理和解决客户的疑问与困难,做好客户的支持与服务工作;
六、其他专项或上级领导安排或支撑工作。
一般情况下,企业招聘网络安全工程师,要求应聘者具备网络安全通信协议、系统漏洞、恶意代码检测与分析、安全攻防、信息安全技术及产品等方面的理论基础和实践经验,同时具有较强的沟通协作能力。 感兴趣的话点击此处,免费学习一下
想了解更多有关网络安全工程师的相关信息,推荐咨询达内教育。达内教育已从事19年IT技术培训,累计培养100万学员,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通。该机构26大课程体系紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术,助力学生更好的学习。