披着羊皮的Neo-reGeorg
混迹 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. 运行环境
- Neo-reGeorg 主程序 (下载地址)
- 需 Python 支持 ,兼容 Python2.x / Python3.x (下载地址)
- 依赖 Python 第三方扩展 requests 模块 (下载地址)
4. 使用案例
目标服务器:
192.168.88.15 Linux3.10, Tomcat8, 防火墙策略只开启 http 8080 端口
测试预期效果:
通过 8080 http 端口登陆目标服务器 SSH
- 通过 neoreg.py 脚本生成服务器端隧道脚本,默认生成到当前路径的
neoreg_server
目录下:
python neoreg.py generate -k password
- 上传 Neo-reGeorg 隧道脚本到目标服务器的虚拟目录:
- 为了可以监控 Neo-reGeorg 和目标服务器的交互过程,中间增加一道 BurpSuite 代理抓取数据包:
监听本地的 8899 端口,并关闭数据中断功能。
- 使用 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
- Xshell 软件设置代理,通过刚才建立的 Socket 正向代理进行远程 SSH 登陆。
- 观察 BurpSuite 转发的 http 数据包,发现传输内容经过加密,伪装成 base64 编码进行传输的。
- 分析 Linux 的
/var/log/secure
日志登陆情况。
通过 Neo-reGeorg 代理方式登陆 SSH,日志记录的 IP 源地址是服务器自身的地址,也就是隧道脚本所在服务器的地址,并非 SSH 客户端 IP 地址。
5. 如何防御 Neo-reGeorg 入侵
很多类似 Neo-reGeorg 的工具从原理上讲,都是对底层字节流量读取后进行特殊加密,然后披上 HTTP 协议外壳偷跑进网站内部的。由于 HTTP 协议包中的数据是特殊加密的,常规前置过滤手段是无法检测出来的 (这也是某些违规上网渠道难以杜绝的主因之一,所谓“道高一尺魔高一丈”)。然而,Neo-reGeorg 类工具的弱点是没办法像 rootkit 那样可以夺舍灵魂隐藏自己 (运气好甚至可以与服务器同寿)。WebShell 这类特征就比较明显了,往往东窗事发后会立刻被清理掉,攻击者只得竭尽所能隐藏行踪,避免被一眼识破。
常见的权限维持手段一般有:
文件伪装,例如伪装成 404 等页面,并自定义返回状态码为 404,在日志审计的时候达到一些干扰作用。
借助 Web 服务软件的文件名/目录解析漏洞伪装,当年的 IIS6 算是火了一把,还有 apache 的文件名从右向左的解析大法。
设置文件属性为隐藏,肉眼为不可见状态,更彻底一些则追加修改注册表,让文件夹选项的"显示所有文件"功能失效。
Linux 上可以借助一些不太常用的命令,如
chattr +i
命令,设定文件不能被修改、删除、改名等操作。利用 Windows 系统保留文件名达到文件无法被删除的目的,如 aux、prn、con、nul、com1、lpt1 等,类似操作:copy 1.asp \\.\D:\wwwroot\aux.asp
把 Shell 内容写入数据库,需要时拿出来用。
对于文件包含的恶意利用,特别是跨域调用的情况来说,因为后门代码不在本地,常规的 Shell 扫描工具是无效的。文件包含的例子如下:
代码隐藏到图片
copy /b 1.jpg 2.php 3.jpg
,那么3.jpg
就是后门和图片的结合体,再以各种手段加载调用,如<?php include (‘3.jpg’); ?>
还有高级的 ADS 文件流的用法,可以参考: 运用 iGuard 防御 ADS 权限维持利用 Web 软件本身配置文件做文章,最常见的是新增了虚拟目录,或者 txt 也变成了脚本解析对象等。
…
这些手段就像跨站漏洞一样,没完没了,不一而足。当一个技术大牛发起狠来,你永远无法估量,又有多少手段被创造出来;重新编译一个带后门的 Web 服务软件替换上去都是有可能的。
那么针对这些可能性,该如何防御?
- 借助 Shell 扫描工具定期自检,熟悉站点架构,去除敏感目录的脚本执行权限。
- 系统日志及 Web 应用日志审计,特别是异常时间段的交互。
- 借助 syslog 做好日志转发备份工作。
- 锁定中间件的配置文件,对于网页文件权限的控制做到最小化,宁可错杀后调整,也不可错放。
- 控制脚本级别文件的增删改,增加脚本白名单功能,只允许白名单内的脚本对外交互。
总 结
基于 Web 的互联网应用越来越广泛,在只保留 HTTP 端口的普遍环境下,获取网站 WebShell 权限后的横向网络渗透测试,Neo-reGeorg 是一款理想的兵器。在网站安全威胁日渐凸显的今天,入侵者轻则篡改网页内容,重则窃取重要内部数据,植入恶意代码,侵害网站访问者。天存信息的 iLocker 文件实时监控工具作为一款专业的网页篡改检测工具,可以有效检测系统异常文件变化,对运维管理团队来说,十分必要。(易树国 | 天存信息)
Ref
- http://www.tcxa.com.cn
- https://github.com/L-codes/Neo-reGeorg
- https://www.python.org/downloads
- https://github.com/kennethreitz/requests
披着羊皮的Neo-reGeorg的更多相关文章
- python装饰器(披着羊皮的狼)
python装饰器的作用是在不改变原有函数的基础上,对函数的功能进行增加或者修改. 装饰器语法是python语言更加优美且避免很多繁琐的事情,flask中配置路由的方式便是装饰器. 首先python中 ...
- 【逆向实战】恶意勒索软件分析_披着羊皮的狼_被注入恶意代码的apk
/文章作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 今天逛某论坛的时候发现了一篇求助贴 有意思,好久没分析过恶意软件了 今天就拿它来练练手 反编译工具 ...
- JS原生第七篇 (帅哥)
1.1 复习 offset 自己的 偏移 offsetWidth 得到自己的宽度 offsetHeight 构成 : width + padding + border div ...
- Bible
001 Love your neighbor as yourself. 要爱人如己.--<旧·利>19:18 002 Resentment kills a foo ...
- 27 GroupSock概述(一)——live555源码阅读(四)网络
27 GroupSock概述(一)——live555源码阅读(四)网络 27 GroupSock概述(一)——live555源码阅读(四)网络 简介 1.网络通用数据类型定义 2.Tunnel隧道封装 ...
- IE内嵌google chrome frame解决浏览器兼容问题
IE内嵌google chrome frame解决浏览器兼容问题 http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...
- 深入Linux网络核心堆栈(对于netfilter的用法和讲解)
http://blog.csdn.net/wswifth/article/details/5115475 注册一个hook函数是围绕nf_hook_ops数据结构的一个非常简单的操作,nf_hook_ ...
- 设计模式总结6--适配器模式 adapter pattern
适配器模式将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间 public interface Sheep{ public void run(); public voi ...
- 复习知识点:GCD多线程
GCD的基础 #pragma mark - 使用GCD 创建一个 串行 队列 // 第一种:系统提供的创建串行队列的方法 // 在真正的开发中如果需要创建串行队列,比较习惯用这种 // dispatc ...
随机推荐
- 用阻塞队列实现一个生产者消费者模型?synchronized和lock有什么区别?
多线程当中的阻塞队列 主要实现类有 ArrayBlockingQueue是一个基于数组结构的有界阻塞队列,此队列按FIFO原则对元素进行排序 LinkedBlockingQueue是一个基于链表结构的 ...
- MySQL主从异常恢复
说明 MySQL主从出现不同步的情况时,或者要添加新的从库时,可以使用以下方法进行操作回复主从. 停止业务应用 停止所有连接到主从库上的应用,在恢复主从期间禁止任何增删改等操作,否则恢复失败 停止主从 ...
- Windows10:虚拟机开机导致win10黑屏、蓝屏
管理员身份打开cmd(命令提示符) 执行如下5个命令 netsh winsock reset net stop VMAuthdService net start VMAuthdService net ...
- macos 安装telnet命令
在10.12及以下版本,都内置了telnet命令,但是在10.13中,已经取消了 接下来给大家介绍下如何安装telnet命令 打开"终端",输入: /usr/bin/ruby -e ...
- OSI与TCP/IP各层的结构与功能,都有哪些协议?
学习计算机⽹络时我们⼀般采⽤折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采⽤⼀种只有 五层协议的体系结构,这样既简洁⼜能将概念阐述清楚. 结合互联⽹的情况,⾃上⽽下地,⾮常简要的介绍⼀下 ...
- CTF反序列化逃逸
刷了一下CTF反序列化的题,去年没有好好了解.又补了一次PHP,害太菜了.每天看看别人的博客真的可以鼓舞人.简单记录一下两道字符串逃逸问题 推荐一个反序列化总结的很好的笔记https://www.cn ...
- 章节1-Prometheus基础(1)
目录 一.Prometheus安装部署 1. 简介 监控的目的 Prometheus的优势 2. Prometheus工作流程: 2.1 服务端 2.2 客户端 2.3 metrics主要数据类型 3 ...
- WPF之花式控件功能扩展
文章默认你已经入门WPF了 WPF日常开发,经常遇到默认的控件功能不满足需求,怎么办? No1. 自定义控件模板 平时开发中,经常遇到比较"俗"的需求,嫌弃控件默认的样子. ...
- [网络流24题]最长k可重线段集[题解]
最长 \(k\) 可重线段集 题目大意 给定平面 \(x-O-y\) 上 \(n\) 个开线段组成的集合 \(I\) ,和一个正整数 \(k\) .试设计一个算法,从开线段集合 \(I\) 中选取开线 ...
- 小白都能理解的TCP三次握手四次挥手
前言 TCP在学习网络知识的时候是经常的被问到知识点,也是程序员必学的知识点,今天小杨用最直白的表述带大家来认识认识,喜欢的朋友记得点点关注哈. 何为TCP 上点官方的话:是一种面向连接(连接导向)的 ...