27

详解内网渗透之环境架设

 4 years ago
source link: https://www.tuicool.com/articles/NJzUr2v
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

前言

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

0×01 网络拓扑

完整的网络拓扑图如下:

jQjQ7vU.jpg!web 图中黄色部分的网络完全由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架设过程

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

FrQrqaY.jpg!web

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

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

muIVjey.jpg!web

注意将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.架设本地出口路由(攻击者的出口路由)

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

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

a6r6VvM.jpg!web

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

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

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

i63U3mB.jpg!web

然后选择虚拟路由菜单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添加一条路由):

euu2uiu.jpg!web

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

3q2uEvr.jpg!web

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

AnMnae2.jpg!web

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

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:

ZjuaAr3.jpg!web

随后进一步的配置需要同样处于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的外网地址如下图:

faAFBnf.jpg!web

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

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

jMrqymn.jpg!web

该层内网中有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 ,做一个端口映射:

3Irqiar.jpg!web

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

JjAN32f.jpg!web

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

UzmEfaA.jpg!web

然后在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:

vayyYv2.jpg!web

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

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

77v2InF.jpg!web

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

yARZzmq.jpg!web

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

reieiib.jpg!web

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

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

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

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

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

J77VJvE.jpg!web

这一层内网模拟企业办公网,所有主机均在域中,首先安装域控主机,即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的正向查找区域中添加一条主要区域(即域的解析记录):

uieau2N.jpg!web

区域名称填:

jIbuuuj.jpg!web

添加完成后,域就可以正常工作。如果对这一部分不太清楚,可以读一读《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为例,加入域的方法为:

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

NZFRVni.jpg!web

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

i2Uz6ju.jpg!web

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

eiYR73m.jpg!web

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

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

qE7Zbyy.jpg!web

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

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

ryAZZfr.jpg!web

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

bIjqIjA.jpg!web

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

qimq2iZ.jpg!web

第二层内网的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”:

FjYjQ3y.jpg!web

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

NrU36ze.jpg!web

iuu6bi2.jpg!web

添加并启用后,可以保证第二层内网内只有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网络配置:

B3eMBfu.jpg!web

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

uANJfmU.jpg!web

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

j6NRrq7.jpg!web3uaueuF.jpg!web

最后安装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, 出现如下界面,说明第三层内网配置成功。

fumEBfZ.jpg!web

最后在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原创奖励计划,未经许可禁止转载


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK