2023年6月24日发(作者:)
⼿把⼿教你如何进⾏内⽹渗透0x00 Preface内⽹渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内⽹主机进⾏⼝令上的攻击,当然也有⼀些基于漏洞的攻击。内⽹相关概念这⾥不再进⾏介绍,⼤家可以⾃⾏百度,诸如什么是域、域与⼯作组的区别、什么是DC、什么是AD等。当然,概念是⽣涩难懂的,结合实际环境会有助于理解。某内⽹靶场的详细教程:内⽹渗透过程中经常会涉及到内⽹穿透,如何理解内⽹穿透以及端⼝转发、端⼝映射等相关知识可以参考:实操部分写的⽐较草率,主要是为了增强认知、扩展思路、扩充知识⾯。实际上有很多优秀的集成化⼯具,很少会拆分开来单独使⽤这些⽅法。当然,⼤多数情况下是要考虑免杀的,免杀时可能会将某⼀步操作拆分出来,单独进⾏免杀和利⽤。0x01 信息收集查看系统详细信息,如OS版本、补丁安装情况,可以根据这些信息筛选可利⽤的漏洞:systeminfo查看启动进程,可以根据启动进程判断主机在域中扮演的⾓⾊:net start查看进程列表:tasklist查看端⼝开放情况:netstat -ano判断是否存在域:net view /domain查看主机名、域DNS、IP:ipconfig /all查看域内主机:net view域内主机以域服务器时间为准,故该命令可⽤于判断DC:net time /domain查看IP:nslookup 域名查看登录信息: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、明⽂获取:mimikatz:Win;mimipenguin:Linux。计算机各种协议、服务⼝令的获取:LaZagne:适⽤于Windows、Linux、Mac。⽀持⾯⼴,但功能⼀般。XenArmor:Win,付费。探测域内存活主机及地址信息:⾃带的内部命令(.bat)、nmap、masscan、powershell第三⽅脚本:empire、nishang。需要注意的是,Mimikatz属于第三⽅软件,直接上传到⽬标主机可能被杀毒软件查杀,这时我们可以配合官⽅软件Procdump,将Procdump上传⽬标主机获取⽤户信息(该⽂件不可读),使⽤本地的Mimikatz打开Procdump获取的⽤户信息。mimikatz下载:procdump下载:0x02 IPC&SMB&WMI前⾯已经说了,内⽹渗透主要是基于⼝令的攻击。同⼀域内的主机不计其数,域⽤户不计其数,为了便于记忆和管理,域成员的密码很多都会有重合。当我们拿到某个域成员的密码,就可以利⽤它把⼝⼦越撕越⼤,不断丰富我们的密码字典,然后不断地对域内主机进⾏爆破,直⾄拿下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(NetBIOSover TCP/IP):使⽤137, 138 (UDP) and 139 (TCP)来实现基于TCP/IP的NETBIOS⽹际互联。我的理解就是,445是139的升级,139实现条件⽐445更苛刻,但两者都是为了实现SMB协议,因此两者并不冲突。在WindowsNT中SMB基于NBT实现,即使⽤139(TCP)端⼝;⽽在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端⼝实现。⼆、IPCIPC(Inter-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端⼝的⽀持。三、WMIWindows管理⼯具(WMI)由⼀组扩展到的Windows驱动程序模型。WMI允许脚本语⾔(例如VBScript或WindowsPowerShell)来本地或远程管理Microsoft Windows个⼈电脑和服务器。简单来说,咱们在cmd或者powershell中使⽤的命令⾏语⾔,就是WMI⽀持的,它提供给我们⼀个接⼝如powershell,便于我们管理计算机。谈及远程管理,延申⼏个⽐较重要的端⼝,如22、23、135、139、445、3389等。139、445端⼝我们前⾯已经讨论过了,22端⼝是linux的ssh,23端⼝是telnet,3389是远程桌⾯连接rdp,这些都⽐较好理解。咱们重点来说⼀下135端⼝。135端⼝主要⽤于使⽤RPC(Remote Procedure Call,远程过程调⽤)协议并提供DCOM(分布式组件对象模型)服务,通过RPC可以保证在⼀台计算机上运⾏的程序可以顺利地执⾏远程计算机上的代码;使⽤DCOM可以通过⽹络直接进⾏通信,能够包括HTTP协议在内的多种⽹络传输。进程间通信(IPC)是在多任务操作系统或联⽹的计算机之间运⾏的程序和进程所⽤的通信技术。有两种类型的进程间通信(IPC)。本地过程调⽤(LPC):LPC⽤在多任务操作系统中,使得同时运⾏的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。远程过程调⽤(RPC):RPC类似于LPC,只是在⽹上⼯作。RPC开始是出现在Sun微系统公司和HP公司的运⾏UNⅨ操作系统的计算机中。简单来说,RPC就是⽤于⽀持远程IPC的连接。⽆论是本地连接还是远程连接,都要依托于VMI服务进⾏管理。四、⼩结SMB协议⽤于实现共享,IPC⽤于建⽴连接,不连接怎么共享?前⾯已经说了,共享是包括命名管道的,⽽命名管道正是连接⽅式,因此SMB协议的共享其实是包含IPC的,不仅如此,它还依赖于IPC连接。但是归根结底,对于连接后的计算机的远程管理,还是要依托于VMI。0x03 at&schtasksat&schtasks⽤于创建定时任务,其中at
users={ 'Administrator', 'boss', 'dbadmin', 'fileadmin', 'mack', 'mary', 'vpnadm', 'webadmin'}passs={ 'admin', 'admin!@#45', 'Admin12345'}
for ip in ips: for user in users: for mima in passs: exec="net use "+ ""+ip+'ipc$ '+mima+' /user:god'+user print('--->'+exec+'<---') (exec) (1)0x04 smb&wmi利⽤思路不变,变的仅是命令。psexec是微软官⽅pstools中的⼯具,所以不需要考虑免杀。其中上图中说到,psexec第⼆种⽅法和smbexec⽆需建⽴IPC连接,我认为是不合理的。这⼏种⽅法只是命令不同罢了,提供明⽂账户密码的时候也是要建⽴IPC连接的,因为这个利⽤就是基于IPC的共享。另外需要注意的就是,官⽅是不⽀持hash连接的,如果想要使⽤hash连接(仅能得到hash),可以使⽤impacket⼯具包,但是要做好免杀。我个⼈认为,前⾯介绍的⼏种⽅法没啥区别,都是基于IPC$共享,都需要139/445端⼝的开启,初此之外,还离不开135端⼝,因为135端⼝时⽤于⽀持远程IPC建⽴的。IPC$共享的⽬的是为了便于管理员进⾏远程操作和管理,但是我们可以利⽤验证时的回显进⾏密码爆破。0x05 pth&ptk&pttPTH:pass the hash(LM、NTLM)PTK:pass the key(AES 256)PTT:pass 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相关使⽤⾃⾏百度。需要注意的是,只有打了补丁(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下载:⼯具kekeo下载:0x05 Reference
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687576548a21521.html
评论列表(0条)