详解内网渗透之环境架设

2019-06-20 270892人围观 ,发现 12 个不明物体 网络安全

*本文原创作者:Zzzxbug,本文属于FreeBuf原创奖励计划,未经许可禁止转载

前言

在网络安全领域,内网渗透技术相较于外网攻击技术,往往不易掌握,因为内网数据一般较为敏感,安全从业者不易取得渗透测试授权,从而难以积累经验,本文将阐述如何使用VMware搭建较一个较复杂的企业内网环境,便于安全从业者练习内网渗透或者ctf组织方搭建内网渗透环境。

0×01 网络拓扑

完整的网络拓扑图如下:

1.png图中黄色部分的网络完全由VMware虚拟机实现,环境搭建需要一台最低配置为32G内存8核CPU、120G空余磁盘空间的主机,搭建完毕后,渗透练习者只需按图左侧部分准备一台windows实体机,安装渗透测试软件及kali虚拟机,然后与已经搭建好渗透测试平台的主机进行连接,即可进行环境配置及练习。

架设过程中用到的系统镜像下载地址如下:

虚拟路由 :https://www.ikuai8.com/component/download

kali : https://cdimage.kali.org/kali-2019.2/kali-linux-2019.2-amd64.iso

windows_server_2008:ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso|3368839168|D282F613A80C2F45FF23B79212A3CF67|/

CentOS7:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

windows7:ed2k://|file|cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso|3265574912|E9DB2607EA3B3540F3FE2E388F8C53C4|/

windows10:ed2k://|file|cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso|4815527936|47D4C57E638DF8BF74C59261E2CE702D|/

sqlserver2008 R2:ed2k://|file|cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso|4662884352|1DB025218B01B48C6B76D6D88630F541|/

0×02架设过程

首先架设公网部分,即下图中蓝色部分:

2.png

公网部分包含攻击者的公网出口路由、企业的公网出口路由、攻击者使用的公网windows(win7)和linux(kali)。下面为具体架设过程:

1. 在虚拟机的虚拟网络编辑器中添加4个虚拟网段(VMnet2、VMnet3、VMnet4、VMnet5):

3.png

注意将4个网段均设置为“仅主机模式”,且都要取消“将主机虚拟器适配器连接到此网络”以及“使用本地DHCP服务将IP地址分配给虚拟机”选项,4个网段ip设置及作用如下:

VMnet2   111.111.0.0 mask 255.255.0.0 作用:模拟公网网段

VMnet3   172.168.2.0 mask 255.255.255.0 作用:模拟第一层内网网段

VMnet4   10.10.10.0  mask 255.255.255.0 作用:模拟第二层内网网段

VMnet5   192.168.222.0 mask 255.255.255.0 作用:模拟第三层内网网段

2.架设本地出口路由(攻击者的出口路由)

环境中的虚拟路由用的都是爱快路的镜像,安装完毕后的界面如下(系统版本号可能与下载的不太一样,我用的是两年前下载的镜像,不过操作应该是一样的):

4.png安装完毕后,将其初始网卡设为桥接模式,然后再为其添加一张网卡,设为VMnet2模式,同时将两张网卡的mac地址记录下来,因为后面要在虚拟路由设置界面中设置哪张网卡是wan,哪张是lan:

5.png

然后选择虚拟路由菜单选项8重启(如果不重启可能导致读取mac地址不正常)。

重启过后,选择菜单1设置网卡绑定,这里需要根据刚才记录下来的mac地址来判断哪张是桥接模式的网卡,哪张是VMnet2的网卡,将那张桥接模式的网卡设置为lan1,VMnet2那张网卡设置为wan1,lan1就是与第一层内网相连的网卡,wan1就是与公网网段相连的网卡,如判断eth0为桥接模式的网卡,则用“set lan1 eth0”来将其设为lan1,然后“set wan1 eth1”将eth1设为虚拟路由的wan口:

6.png然后选择软路由菜单2设置lan地址,依据网络拓扑图,我这里设置路由器1的出口地址为192.168.1.120: 

7.png

然后选择虚拟路由菜单3设置web端口,我这里设置为8080,随后就可以通过本地实体机访问http://192.168.1.120:8080来继续配置路由器(注意本地实体机要访问虚拟公网,有两种方法:1是设置默认网关为192.168.1.120;2是执行route add 111.111.0.0 mask 255.255.0.0 192.168.1.120添加一条路由):

8.png

默认用户名、密码均为admin,登录后,进入外网设置菜单,

9.png

设置参数如下图,将router1的wan口地址设置为111.111.111.1:

这样,本地出口路由就设置完毕!

3.架设攻击者的公网vps

安装公网win7及kali都很简单,安装完win7后,设置其网卡模式为VMnet2,进入系统后,设置其ip地址为111.111.111.2,设置密码,并为其开启远程桌面;安装完kali后,设置其网卡模式为VMnet2,进入系统,设置其ip地址为111.111.111.4,然后/etc/init.d/networking restart重启网络服务,但由于kali默认没有开启ssh远程登录,需要按下列步骤为其配置ssh远程连接:

(1)修改/etc/ssh/sshd_config文件,将#PasswordAuthentication no的注释去掉,并将NO修改为YES,将PermitRootLogin without-password修改为PermitRootLogin yes

(2)重启ssh服务:/etc/init.d/ssh restart

(3)设置系统自启动ssh服务:update-rc.d ssh enable

配置完毕后,在本地攻击机远程桌面公网win7,成功则配置正常,在本地用ssh软件(推荐xshell)远程连接公网kali,成功则配置正常。

4.架设软路由router2(企业的出口路由)

配置router2的过程大致与router1相同,注意将其初始的网卡模式设为VMnet2,然后为其添加一块网卡模式为VMnet3,同样记下两张网卡的mac地址,用于稍后的网卡绑定,在网卡绑定中,设置VMnet3模式的网卡为LAN1,设置VMnet2模式的网卡为WAN1,然后配置LAN1的地址为172.168.2.3,web管理端口为8080:

随后进一步的配置需要同样处于VMnet3模式的一台主机访问http://172.168.2.3:8080才能进行,所以我们先安装第一层内网中的一台win7(也就是IP地址为172.168.2.200的那台win7),安装完毕后,将在虚拟机设置中将这台win7其网卡模式配置为VMnet3,进入系统,设置ip为172.168.2.200,掩码255.255.255.0,默认网关172.168.2.3(router2的lan1的地址),设置完成后,通过浏览器访问http://172.168.2.3:8080,默认用户名admin密码admin登录路由web界面,配置router2的外网地址如下图:

配置完毕后,从本地攻击主机ping 111.111.111.3这个地址(即router2的wan1地址),如果正常,则说明配置成功。

至此,模拟环境的公网部分配置完毕了,接下来配置第一层内网,也就是下图中黄色部分:

该层内网中有1台server2008(172.168.2.2)服务器,充当企业对外的门户网站,一台win7作为管理员主机,1台双网卡的centos7(172.168.2.120&&10.10.10.110),代替路由作为第一层与第二层的桥梁。Win7刚刚已经配置过,下面配置server2008与centos7,

安装完毕server2008后设置其网卡模式为VMnet3,ip地址设为172.168.2.2,掩码255.255.255.0,默认网关172.168.2.3(即router2的lan1地址),然后在其上安装phpstudy,并架设一个存在漏洞的cms,作为外网突破点,为了让外网能够访问这台server2008上的web服务,必须在router2上做一端口映射,具体操作如下,利用ip地址为172.168.2.200的win7登录router2的web管理界面http://172.168.2.3:8080,做一个端口映射:

让server2008的网站能够暴露在公网上,端口映射配置参数如下:

配置完成后,从本地攻击机访问http://111.111.111.3,可以看到,我们已经可以访问到内网中server2008上的网站了。

然后在172.168.2.200这台win7上启动一个机器人脚本,其内容如下:

While True

set obj = createobject("wscript.shell")

obj.run "cmd /c iexplore http://172.168.2.2/pdf1.html"

WScript.Sleep(1000*30)

obj.run "taskkill /IM iexplore.exe"

WScript.Sleep(1000*30)

Wend

这个脚本的作用是每隔一段时间访问server2008网站上的指定页面,因为等我们拿下server2008后需要对win7做钓鱼,所以做个机器人比较方便。

然后安装centos7,为了减小系统开销,我用的是最小化安装,安装完毕后将其初始网卡模式配置为VMnet3,其为再添加一块网卡,模式配置为VMnet4,centos7配置双网卡工作的坑稍多,说一下步骤:

进入系统,首先输入命令“ip addr”,查看两张网卡名称,这里分别为ens33与ens37:

根据MAC地址,判断哪张网卡需要连接第一层内网,另一张则连接第二层内网,例如确定ens33这张网卡连接第一层内网,则

“cd /etc/sysconfig/network-scripts/”进入网络配置文件目录,ls查看,

这里的ifcfg-ens33这个配置文件对应ens33这张网卡的配置,我们要配置ens33的网络参数,就要编辑这个文件,vi ifcfg-ens33,编辑文件内容如下:

然后退出vi,下面要编辑ens37这张网卡,先cp ifcfg-ens33 ifcfg-ens37,复制一份配置文件,然后vi ifcfg-ens37,编辑文件内容如下图:

注意:里面的UUID可能需要用uuidgen命令生成。

配置好ens37,使用命令“nmcli con up ens37”,启动ens37,如果没有报错,则“service network restart”重启网络服务,然后用该层内网中win7 ping 172.168.2.120,如果回显正常则说明配置成功。

然后为win7安装ssh软件,登录centos7,将其密码改为win7相同的密码(因为我们要实现一个同密码攻击).

至此,第一层内网配置完毕。

下面配置第二层内网,即下图中黄色部分:

这一层内网模拟企业办公网,所有主机均在域中,首先安装域控主机,即ip为10.10.10.56的server2008主机。

安装完毕server2008系统后,将其网卡模式配置为VMnet4,ip地址设为10.10.10.56,掩码设置为255.255.255.0,默认网关设为10.10.10.254,DNS设为127.0.0.1(因为域中一定需要一台DNS服务器,我们稍后会将DNS服务也安装到这台域控上,所以这里可以设置为127.0.0.1),然后用服务器管理器“添加角色”,添加Active Directory域服务(域名称为domainTest1.com)以及DNS服务器(DNS服务器也可以安装在其他server级别的主机上,不过如果将两者分开安装,需要先安装DNS服务,并在DNS服务的正向查找区域中添加要安装Active Directory域服务的域解析记录,并在安装Active Directory域服务之前正确设置域控主机的dns服务器地址,比较麻烦,所以这里采用域控与DNS服务合并的办法),安装完毕后,需要在DNS的正向查找区域中添加一条主要区域(即域的解析记录):

区域名称填:

添加完成后,域就可以正常工作。如果对这一部分不太清楚,可以读一读《windows server2008R2 Active Directory配置指南》的1-3章相关内容。

域控安装完毕后,我们继续安装该层内网中的其他主机:ip地址为10.10.10.3的win7与10.10.10.88的server2008,安装完毕后将它们的网卡模式均配置为VMnet4,ip地址依照拓扑图上设置,掩码255.255.255.0,网关10.10.10.254,注意DNS都要设置为域控的ip地址即10.10.10.56,设置完毕后,登录两台主机将它们加入域,以win7为例,加入域的方法为:

右击计算机–>计算机名称、域与工作组设置–>更改设置–>计算机名选项页–>更改,将“隶属于”单选框切换到“域”选项:

输入域的名称domainTest1.com,点确定,弹出对话框:

这里输入域管理员的账户及密码,确定后,弹出如下对话框:

表明这台win7成功加入了域domainTest1.com域,重启win7,以域内账号登陆即可。

Server2008加入域的步骤与win7类似,不再赘述,待server2008加入域后,以域管理员账户登陆,安装phpstudy,在8080端口上架设一个企业内部的OA系统:

然后在这台server2008上利用服务器管理器添加角色,安装iis,使其在80端口上能够被第二层内网正常访问,为其添加一个asp页面。该页面通过第三个虚拟路由router3连接到第三层内网的sqlserver2008。至此,第二层内网环境架设完毕。

接下来架设第三层内网,第三层内网模拟企业的核心数据网,与第二层之间使用路由器进行隔离,下图中黄色部分为第三层内网部分:

首先架设虚拟路由,依然先安装爱快路虚拟路由,安装完毕后,虚拟机设置中将其初始网卡模式设为VMnet4(与LAN2相连),然后再为其添加一张网卡,模式设为VMnet5(与LAN3相连),记录下两张网卡的MAC地址,然后进入虚拟路由设置界面,设置网卡绑定为:VMnet4模式的网卡为lan1,VMnet5模式的网卡为lan2:

在设置lan地址中设置lan1地址为10.10.10.200,设置web端口为8080,然后用第二层内网中的win7访问http://10.10.10.200:8080,设置lan2的地址为192.168.222.22

第二层内网的server2008(10.10.10.88)需要访问第三层sqlserver2008数据库(192.168.222.200:1433),而第三层的win10(192.168.222.77)需要访问第二层的server2008上的web服务(10.10.10.88:80),所以需要分别在虚拟路由的lan1与lan2的高级设置中设置“允许其他LAN访问此LAN”:

但如果只是打开LAN互访控制,则第二层内网与第三层内网就会无限制相互访问,降低了安全性,所以添加6条ACL规则:

添加并启用后,可以保证第二层内网内只有ip为10.10.10.88的主机能够访问第三层内网的192.168.222.200的1433端口,在第三层内网中只有192.168.222.77的主机能够访问第二层内网的10.10.10.88的80端口。

第三个虚拟路由安装完毕后,接下来安装第三层内网中的server2008与win10,安装完系统后,分别依照拓扑图设置ip,掩码255.255.255.0,默认网关192.168.222.22。然后在server2008上安装sqlserver2008,并创建名为“test”数据库,执行test.sql数据库脚本,导入test.data的数据,并配置sqlserver2008可以为外网访问,这里配置稍微繁琐,简答介绍一下:

打开SQLserver配置管理器,如下图设置SQLServer网络配置:

然后双击TCP/IP协议,切换到IP地址选项卡,将所有的IP地址下的“活动”、“已启用”均切换为是,也就是让SQLserver在所有IP地址上监听:

最后,在这台主机的“高级安全windows防火墙”配置中添加一条规则,设置通过1433端口:

最后安装ip地址为192.168.222.77的win10,安装完毕后,配置网卡模式为VMnet5,ip地址为192.168.222.77,掩码255.255.255.0,网关192.168.222.22,然后用浏览器访问http://10.10.10.88/index.asp?id=1,出现如下界面,说明第三层内网配置成功。

最后在win10上启动一个vbs脚本机器人,让其自动访问http://10.10.10.88上的页面,因为我们那些第二层内网后要对第三层内的win10做钓鱼攻击。

至此这个三层内网的渗透靶场架设完毕,至此本文的篇幅已经够长了,所以这个靶场的writeup就不仔细写了,下面简单介绍一下攻击思路。

0×03 攻击思路

1. 外网突破

扫描111.111.111.0/24段,发现111.111.111.3:80开放,登录发现网站,awvs扫描发现网站存在SQL注入漏洞,于是注入获取用户名及密码,登录成功后获取网站物理路径,在网站后台中试图上传webshell不成功,通过御剑扫描网站,发现phpmyadmin,用弱口令登录phpmyadmin,试图用mysql写webshell,发现mysql开启了secure-file-priv开关限制了写文件目录,使用mysql开启日志文件,将日志文件的位置设置为刚才在后台中发现的网站物理路径位置,在sql查询语句中写webshell,成功拿到webshell。

2. 第一层内网渗透

利用webshell上传反向socks5代理软件frpc等,在公网windows上运行frps,使得这台webshell主机的代理客户端与公网windows主机上的代理服务端相连接,这样在本地windows攻击机上安装Proxifier、SocksCap64等软件(kali用proxychains),就可以将攻击流量发送至第一层内网。

通过在本地扫描webshell网段,可以发现172.168.2.200(linux)、172.168.2.120(windows)两台主机,在webshell主机的apache日志中可以发现172.168.2.120这台主机在不断访问http://172.168.2.2/pdf1.html这个页面(robot.vbs的作用),于是用CVE-2018-8174对172.168.2.120进行钓鱼(用法详见压缩包),钓鱼成功后,获取172.168.2.120的msf反弹回话,上传getpass进行密码抓取,然后利用msf的远程桌面开启脚本转出3389到公网kali,远程桌面登录后发现管理员桌面上有ssh软件,联想到该层内网还有一台linux主机,所以猜测这台主机的密码与linux相同,于是尝试用相同密码登录,登录成功,于是拿下linux,第一层内网渗透完毕!

3. 第二层内网渗透

在linux上搜集信息发现双网卡,在10.10.10.0/24网段上进行扫描发现3台主机存活,并且10.10.10.88这台主机上开放了80、8080端口,访问http://10.10.10.88:8080发现phpoa系统,利用任意文件上传POC拿到webshell,然后判断环境为域环境,并且当前登录账户为域管理员账户,于是上传getpass拿到域控密码,利用ipc入侵,拿下域内其他两台主机,第二层内网渗透完毕!

4. 第三层内网渗透

在10.10.10.88上发现还打开了80端口,上面运行着iis服务,并且连接着192.168.222.200上的sqlserver数据库,于是利用sqlserver存储过程执行命令,不过由于router3的acl规则很严格,所以无法进行回话反弹。另外审查10.10.10.88的iis日志,发现192.168.222.77的ie浏览器对其有规律性的访问记录,所以可以利用CVE-2018-15982对其进行钓鱼,不过需要注意的一点是192.168.222.77是一台win10,自带杀毒软件,所以需要对可执行payload进行免杀处理。

架设过程中用到的素材我已上传到网盘:链接:https://pan.baidu.com/s/1NIOIZgVDLgkg7j6Ch5pjwA 提取码:kws9 ,如果在架设过程中遇到问题,欢迎私信联系我。

*本文原创作者:Zzzxbug,本文属于FreeBuf原创奖励计划,未经许可禁止转载

这些评论亮了

  • 玄道 回复
    我以为你是在教我如何构建企业防护,并绕过层层防护,直逼内网,原来是在教我用VMware
    )26( 亮了
  • 菜鸡 回复
    https://github.com/attacker2001/PT-Environment
    )6( 亮了
发表评论

已有 12 条评论

取消
Loading...

特别推荐

推荐关注

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php