混迹 Web 安全行业许久,查杀网站后门已是家常便饭。时间久了,养“马”场也见的多了,Neo-reGeorg 算得上是同类中战斗力超群的“野马”了,也深受黑客和安全渗透人员的喜爱。Neo-reGeorg 能够简化攻击流程。通常,拿下 Web 服务器并进一步横向渗透时,在 Web 服务器上安装必要辅助工具的过程往往不会很顺利。而 Neo-reGeorg 可以让问题变得轻松很多,只需在本地安装好扫描工具,通过 Neo-reGeorg 把流量透传到 Web 服务器内部就可以了。

1. 工具介绍

Neo-reGeorg 是 reGeorg 和 reDuh 的升级版,是为了应付复杂的网络环境重构的项目。该工具基于 HTTP(S) 协议建立隧道,会在本地创建 Socket 监听 1080 端口用于正向代理访问 Web 服务器隧道脚本,通过正向代理的方式把数据加密封装到 HTTP 数据包中转发到服务器的横向网络中,同时隧道脚本也会把内网服务器端口的数据加密封装到 HTTP 数据包中转发到本地的 Socket 接口。

2. 涉及的概念

  • 隧道技术

    隧道技术是网络设备之间传输数据的一种方式,使用隧道技术的数据包会被特殊处理 (封装打标签),并通过网络传输,其传输所经过的逻辑路径称为隧道,数据到达最终目的地会进行数据还原处理。隧道技术涵盖了数据封装 (打标签)、传输和解包 (去标签) 的整个过程。隧道是逻辑上的概念,是基于现有网络基础的产物。

  • 正向和反向代理

    正向代理:Proxy 和 Client 同属一个区域,对 Server 透明。正向代理的控制权在自己手上,策略可以自定义。

    反向代理:Proxy 和 Server 同属一个区域,对 Client 透明。反向代理的控制权在 Server 端,策略无法自定义。

  • Socket 和端口

    Socket 也称套接字,编程中会绑定到某个端口进行监听,应用程序通过它来发送或接收数据。Socket 套接字可以形象地理解为一张和检票口 (监听端口) 绑定的机票,乘客持此机票在检票口附近不断轮询检票口状态,当飞机到达检票口位置,乘客就可以登机了,飞机的可靠性 (类似 TCP/UDP 的选择) 则取决于机型和机长经验等因素。

3. 运行环境

4. 使用案例

目标服务器:

192.168.88.15 Linux3.10, Tomcat8, 防火墙策略只开启 http 8080 端口

测试预期效果:

通过 8080 http 端口登陆目标服务器 SSH

  1. 通过 neoreg.py 脚本生成服务器端隧道脚本,默认生成到当前路径的 neoreg_server 目录下:

    python neoreg.py generate -k password

  1. 上传 Neo-reGeorg 隧道脚本到目标服务器的虚拟目录:

  1. 为了可以监控 Neo-reGeorg 和目标服务器的交互过程,中间增加一道 BurpSuite 代理抓取数据包:

监听本地的 8899 端口,并关闭数据中断功能。

  1. 使用 neoreg.py 脚本通过 BurpSuite 代理连接到刚才上传的 tunnel 脚本。

    此脚本会在本地建立 Socket 并监听 1080 端口

    所有数据请求都通过 BurpSuite 进行代理中转

  python neoreg.py -k password -vv -u http://192.168.88.15:8080/tunnel.jsp --proxy http://127.0.0.1:8899

  1. Xshell 软件设置代理,通过刚才建立的 Socket 正向代理进行远程 SSH 登陆。





  1. 观察 BurpSuite 转发的 http 数据包,发现传输内容经过加密,伪装成 base64 编码进行传输的。

  1. 分析 Linux 的 /var/log/secure 日志登陆情况。

通过 Neo-reGeorg 代理方式登陆 SSH,日志记录的 IP 源地址是服务器自身的地址,也就是隧道脚本所在服务器的地址,并非 SSH 客户端 IP 地址。

5. 如何防御 Neo-reGeorg 入侵

很多类似 Neo-reGeorg 的工具从原理上讲,都是对底层字节流量读取后进行特殊加密,然后披上 HTTP 协议外壳偷跑进网站内部的。由于 HTTP 协议包中的数据是特殊加密的,常规前置过滤手段是无法检测出来的 (这也是某些违规上网渠道难以杜绝的主因之一,所谓“道高一尺魔高一丈”)。然而,Neo-reGeorg 类工具的弱点是没办法像 rootkit 那样可以夺舍灵魂隐藏自己 (运气好甚至可以与服务器同寿)。WebShell 这类特征就比较明显了,往往东窗事发后会立刻被清理掉,攻击者只得竭尽所能隐藏行踪,避免被一眼识破。

常见的权限维持手段一般有:

  1. 文件伪装,例如伪装成 404 等页面,并自定义返回状态码为 404,在日志审计的时候达到一些干扰作用。

  2. 借助 Web 服务软件的文件名/目录解析漏洞伪装,当年的 IIS6 算是火了一把,还有 apache 的文件名从右向左的解析大法。

  3. 设置文件属性为隐藏,肉眼为不可见状态,更彻底一些则追加修改注册表,让文件夹选项的"显示所有文件"功能失效。

  4. Linux 上可以借助一些不太常用的命令,如 chattr +i 命令,设定文件不能被修改、删除、改名等操作。

  5. 利用 Windows 系统保留文件名达到文件无法被删除的目的,如 aux、prn、con、nul、com1、lpt1 等,类似操作:copy 1.asp \\.\D:\wwwroot\aux.asp

  6. 把 Shell 内容写入数据库,需要时拿出来用。

  7. 对于文件包含的恶意利用,特别是跨域调用的情况来说,因为后门代码不在本地,常规的 Shell 扫描工具是无效的。文件包含的例子如下:

    代码隐藏到图片 copy /b 1.jpg 2.php 3.jpg,那么 3.jpg 就是后门和图片的结合体,再以各种手段加载调用,如 <?php include (‘3.jpg’); ?>

    还有高级的 ADS 文件流的用法,可以参考: 运用 iGuard 防御 ADS 权限维持

  8. 利用 Web 软件本身配置文件做文章,最常见的是新增了虚拟目录,或者 txt 也变成了脚本解析对象等。

这些手段就像跨站漏洞一样,没完没了,不一而足。当一个技术大牛发起狠来,你永远无法估量,又有多少手段被创造出来;重新编译一个带后门的 Web 服务软件替换上去都是有可能的。

那么针对这些可能性,该如何防御?

  • 借助 Shell 扫描工具定期自检,熟悉站点架构,去除敏感目录的脚本执行权限。
  • 系统日志及 Web 应用日志审计,特别是异常时间段的交互。
  • 借助 syslog 做好日志转发备份工作。
  • 锁定中间件的配置文件,对于网页文件权限的控制做到最小化,宁可错杀后调整,也不可错放。
  • 控制脚本级别文件的增删改,增加脚本白名单功能,只允许白名单内的脚本对外交互。

总 结

基于 Web 的互联网应用越来越广泛,在只保留 HTTP 端口的普遍环境下,获取网站 WebShell 权限后的横向网络渗透测试,Neo-reGeorg 是一款理想的兵器。在网站安全威胁日渐凸显的今天,入侵者轻则篡改网页内容,重则窃取重要内部数据,植入恶意代码,侵害网站访问者。天存信息的 iLocker 文件实时监控工具作为一款专业的网页篡改检测工具,可以有效检测系统异常文件变化,对运维管理团队来说,十分必要。(易树国 | 天存信息)

Ref

披着羊皮的Neo-reGeorg的更多相关文章

  1. python装饰器(披着羊皮的狼)

    python装饰器的作用是在不改变原有函数的基础上,对函数的功能进行增加或者修改. 装饰器语法是python语言更加优美且避免很多繁琐的事情,flask中配置路由的方式便是装饰器. 首先python中 ...

  2. 【逆向实战】恶意勒索软件分析_披着羊皮的狼_被注入恶意代码的apk

    /文章作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 今天逛某论坛的时候发现了一篇求助贴 有意思,好久没分析过恶意软件了 今天就拿它来练练手 反编译工具 ...

  3. JS原生第七篇 (帅哥)

    1.1 复习 offset   自己的 偏移 offsetWidth    得到自己的宽度 offsetHeight 构成 :   width  +   padding  +  border div ...

  4. Bible

    001 Love your neighbor as yourself.         要爱人如己.--<旧·利>19:18      002 Resentment kills a foo ...

  5. 27 GroupSock概述(一)——live555源码阅读(四)网络

    27 GroupSock概述(一)——live555源码阅读(四)网络 27 GroupSock概述(一)——live555源码阅读(四)网络 简介 1.网络通用数据类型定义 2.Tunnel隧道封装 ...

  6. IE内嵌google chrome frame解决浏览器兼容问题

    IE内嵌google chrome frame解决浏览器兼容问题  http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...

  7. 深入Linux网络核心堆栈(对于netfilter的用法和讲解)

    http://blog.csdn.net/wswifth/article/details/5115475 注册一个hook函数是围绕nf_hook_ops数据结构的一个非常简单的操作,nf_hook_ ...

  8. 设计模式总结6--适配器模式 adapter pattern

    适配器模式将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间 public interface Sheep{ public void run(); public voi ...

  9. 复习知识点:GCD多线程

    GCD的基础 #pragma mark - 使用GCD 创建一个 串行 队列 // 第一种:系统提供的创建串行队列的方法 // 在真正的开发中如果需要创建串行队列,比较习惯用这种 // dispatc ...

随机推荐

  1. RNA

    原始地球 你会想,我们每一个细胞中都有一个遗传分子叫做DNA?那么,DNA之前有没有什么遗传分子呢?我的答案是:"有".在远古地球,那个海底有无数火山,喷发的火山口两侧都是喷涌出的 ...

  2. 《PHP扩展学习系列》系列分享专栏

    <PHP扩展学习系列>系列分享专栏   <PHP扩展学习系列>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/20177 ...

  3. Maven项目导入Intellij IDEA

    目录 1. 自动创建maven项目 2. 修改IDEA默认远程仓库,提高依赖包下载速度 3. 修改IDEA中maven设置 4. 将maven项目导入IDEA 坑:IDEA无法下载依赖包 1. 自动创 ...

  4. 分享一份550多个Linux命令的文档,按照命令首字母索引排序

    输入一个命令,让我给你一个关于它的完美解释! 众所周知,Linux命令是IT人必须掌握的一个技能,有了它,我们可以部署和维护各种各样的服务和应用.但是,大部分的Linux命令我们不一定记得住,而别是各 ...

  5. dp 套 dp扯谈

    1.[扯谈概念] \(dp\) 套 \(dp\) 其实也就是 \(dp\) . 这里就定义下面两个概念: 内层 \(dp\) 表示的是被套在里面的那个 \(dp\) 外层 \(dp\) 表示的是最外面 ...

  6. ti

    一.选择题DCBCDCDACAACBBABACBDCBBDA二.简答题(每小题5分,共20分)1. 1)简洁紧凑,灵活方便2)运算符丰富3)数据类型丰富4)C语言是结构化语言5)语法限制较少,程序设计 ...

  7. 电脑通过WIFI连接手机ADB

    1.搜索adb wifi 2.安装并开启:根据提示 3.电脑:adb connect 192.168.1.134 a安装ADB TOOLS b安装ADB DRIVER c将ADB TOOLS复制到c: ...

  8. POJ1934 Trip 题解

    LCS 模板,但要输出具体方案,这就很毒瘤了. 神奇的预处理:fa[i][j]表示在 \(a\) 串的前 \(i\) 个字符中,字母表第 \(j\) 个字母最晚出现的位置,fb[i][j]同理. 这样 ...

  9. 第十篇 -- Windows 下免费的GIF录制工具

    网址:https://blog.csdn.net/u013019701/article/details/80550411 本人用的第二个,亲测好用.

  10. SSRF漏洞入门篇

    SSRF漏洞,又名服务端请求伪造漏洞. PHP中下列函数使用不当会导致SSRF: file_get_contents().fsockopen().curl_exec()函数(源码审计的时候注意点儿): ...