zoukankan      html  css  js  c++  java
  • 内网横向渗透的部分思路

    一、简介

    0x01、什么是横向渗透

      横向渗透,就是在已经攻占部分内网主机的前提下,利用既有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限、发动 APT (高级持续性威胁攻击)的目的。

    在横向渗透中,最先得到的主机,以及之后新得到的主机,会成为突破口、跳板。如同一个不断扩大的圆形,获得的主机越多,圆能触及之处越大,让其周遭的「横向」部分由未知成为已知。

    0x02、内网的注意之处

    • 内网防火墙与杀毒软件:内网一样能有防火墙、流量监控,而杀毒软件更是很多服务器的标配(360也算)。在进行攻击时,不能全然忽略这些安全措施,否则很容易触发警报。

    • 与管理员同行:对,与管理员同行既是机遇,也是风险。最常见的剧情是手抖把管理员的远程桌面连接踢了,或者渗透工具还在打开状态,远程桌面会话被管理员抢了。这狗血剧情我多次遇到,管理员后来改了密码,所幸留了后门重获权限,而且还掌握了新的密码(算是收获吧)。

    • 蜜罐类:蜜罐不一定非要套出你的东西,只需要感知你的存在,便能够治你了。

    二、横向渗透的常用招数

    常用姿势可以分为数据挖掘类、后门类、攻击类三大类,其危险性逐级递增。

    0x01、 数据挖掘类

    这一类姿势注重的是主机上已保存的凭据等信息。在其中可能发现:

    • 其他主机的凭据

    • 更高权限的凭据

    • 能够利用的凭据

    • 有用的资料、文档

    1、保存的密码

    由于人的惰性,管理员可能习惯了任何登录都勾选了保存密码,方便下一次登录

    常见保存的密码:

    • 浏览器保存的密码

    • 远程桌面客户端保存的密码

    • VNC 客户端保存的密码

    • 数据库客户端保存的密码

    • VPN 连接保存的密码

    利用方式:

    使用各种保存的密码对应的提取工具(有的甚至不需要提取工具,直接在配置文件里明文储存的),得到更多的凭据。

    2、Windows 缓存的凭据

    Windows 10、Windows Server 2016 以前,任何已登录的账户都会在内存里缓存明文密码,据说是为了向下兼容性。而只要你有机子的管理员权限,就能够把它们从内存里面扯出来。

    这样,如果你看到系统已经登录了其他用户,或者你当前是 0day 拿到的 SYSTEM 权限不知道管理员密码而管理员帐户在线,就可以用工具把他们的密码拖出来,充实密码库。

    最新的系统(Windows 10、Windows Server 2016)中,明文密码缓存默认关闭,但仍然可以通过修改注册表相应配置开启。

    利用方式:

    使用 mimikatz 提取内存中缓存的明文密码,得到更多凭据。对于虚拟机,可以 dump 其内存并用相关工具提取。

    3、Hash Dump

    有时候你能够以某个管理员帐户登录 Windows 系统,但是其他管理员账户并不在线,那就不能直接提取明文密码了。但是依然可以使用工具,虽然得不到明文,但是可以得到密码的 hash。

    破解 Windows 的密码 hash 难度差异很大。对于Windows Server 2008 以前的系统,储存密码加密算法较弱,一个密码同时以 NTLM 与 LM 两种形式储存。以现有的彩虹表水平,14位(可能有误)以内的 NTLM 与 LM 哈希对可以秒破,无论其复杂度。但是对于之后的系统,默认只有 NTLM 哈希,只有简单的能破解。

    当然破解不出来,如果在域中的话,hash值可以作为凭据使用。

    4、历史记录与 Cookies

    与「保存密码」一样,「自动登录」也是一个具有诱惑力的框框。看看网管浏览器的历史记录,能不能发现一些奇怪的网址?

    利用方式:

    可以直接提取 cookies 并分析,但建议以浏览记录为导向。

    5、数据库凭据

    数据库凭据,除了第一个中在数据库管理工具中偷懒保存的凭据,还有一些实在是不得不保存的:比如的确需要连接到一个数据库。

    而拿到数据库凭据,不光可以充实密码库、拖库和删库跑路,如果是远程数据库,还可能拿下另一台主机。

    很多情况下,拿到数据库的管理员账户,可以得到机子的管理员权限。即利用sqlmap通过数据库的管理员权限获取交互式shell。

    利用方式:

    寻找各种软件的配置文件、网站的配置文件,挖掘其中的数据库凭据。

    6、Linux 的 bash 日志

    Linux 的 bash 也会出卖你的……你看看你主目录下有啥?看不到?给 ls 加上 -al 参数再看看。一个名叫 .bash_history 的文件记录了你所有在 bash 里的输入。或者直接history命令查看,命令不行再利用cat查看.bash_history文件。

    所以在拿到 shell 的情况下,就能很容易看到当前用户执行过的命令。要是里面有密码,那就爽歪歪了。

    7、密码本

    对,就是管理员把相关密码写在文本、文档里面来帮助记忆。这也不是没可能,至少有人就这样干过。

    利用方式:

    全盘寻找奇怪的小本子,运气好能捡到一堆凭据。

    8、资料文档

    资料文档往往不包含凭据,但是能提供更多网络架构之类的线索,为 APT 提供方便。

    利用方式:

    全盘寻找资料文档,常常与服务安装包或服务程序放在一起。

    9、临时文件

    下载目录、QQ 下载文件里面都可能藏着有趣的东西。对我说的就是 QQ,你会遇到装 QQ 的服务器的。

    找就完事儿。

    0x02、 后门

    这里的姿势主要是在已攻占的主机上安装一些自己的程序,从而达到保有-扩展的目的。

    1、保留后门

    最烦人的事之一,就是锅里的鸭子飞了,拿到手的服务器跑了。曾经拥有却不曾珍惜,直到失去才后悔莫及。多个主机多条路,保持已有的权限是很重要的。

    方法的话很多,各种后门,不管是正向的,反向的,我一般用的是cs的后门,也可以用meterpreter生成的后门程序,还可以将后门程序绑定在一个应用程序上。

    2、键盘记录器

    有的网管克制住了保存密码的欲望,不过一旦部署了键盘记录器,只要他输入了密码就呜呼哀哉了。理想的键盘记录器应该自动启动、隐藏运行,然而现成的都不怎么符合。

    0x03、 攻击

    1.ARP 污染中间人攻击

    因为同一子网内的主机之间的通信是二层的,所以在没有 ARP 表防污染措施的情况下,可以通过 ARP 协议固有的缺陷进行 ARP 污染,从而中间人攻击。

    污染成功后可以进行如下操作:

    监听网络流量:
    你可以监听到所有目标服务器到网关(或其他被污染目标)之间的所有网络流量。例如目标是一台没有使用 HTTPS 的网页登录服务器,则可以抓获所有登录凭据。 

    篡改网络流量:

    你可以对网络流量进行任意篡改,实现增添删减流量内容,或者替换 SSL 证书监听加密通信。当然你的 SSL 证书不被接受的话很容易触发警告。

    2.系统漏洞扫描

    对于在内网环境中没有暴露在公网上的主机而言,网管很容易放松警惕。尤其是对于纯内网的机器,打补丁、软件升级较为繁琐,导致可能大量 系统漏洞没有修补。于是可以进行漏洞扫描,用系统漏洞轻松拿下新的主机。

    比如ms17-010,还有CVE-2019-0708等

    3.反向渗透

    反向渗透,即在被攻占的主机上放置特殊程序,导致之后连上此服务器的主机(如网关机)被攻击。

    这种操作包括但不限于使用病毒并祈求管理员把它下载下来并运行。也有利用协议漏洞或缺陷实现的。一个例子是 RDPInception。

    4.各个端口服务

    对针对性的端口进行收集,然后利用,比如内网中的80端口的web服务,一般内网的web特别的弱,尝试一些web漏洞有可能就可以拿下,还有445、3389和一些redis服务、数据库等这些服务的端口,如果有可以进行一些对应的操作。

    5.撞库

    怎能忘了撞库!人都有惰性,网管也是人,他们总是倾向于在不同系统上使用同一个密码,或者有规律的密码。

    利用自己在内网中收集到的密码库,还有一些弱密码,拿去给每个内网机子或者一些服务撞库,说不定就可以登录进去。

    6.社工方法

    社工这里就不做详细讲解,就是在已知信息的网关或者相关人上利用自己的手段从这些人口中套出重要铭感信息。

    7.与网管错峰

    在系统日志里面,你可以知道网管的在线高峰期是哪些,从而避开这些时间段,尽量减少撞车的可能。

    这里主要介绍了内网的部分渗透姿势,域环境的话还不止这些。

  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/-chenxs/p/12318448.html
Copyright © 2011-2022 走看看