0x00 前言


2017年11月9日维基解密公布一个代号为Vault8的文档,包含服务器远程控制工具Hive的源代码和开发文档。开发文档中的框架图显示Hive支持流量分发功能,若流量有效,转发至Honeycomb服务器,若流量存在问题,转发至Cover Server。
本文仅站在技术研究的角度,尝试使用Apache的mod_rewrite模块实现http流量分发,完成相同的目标。

标记后的框架图如下:

之前的分析文章:

《CIA Hive测试指南——源代码获取与简要分析》

0x01 简介


本文将要介绍以下内容:

  • Windows系统下安装配置Apache mod_rewrite
  • Ubuntu系统下安装配置Apache mod_rewrite
  • 规则配置技巧与实例
  • 根据判定条件实现http流量分发

0x02 Windows系统下安装配置Apache mod_rewrite


1、下载Apache

地址:

http://httpd.apache.org/download.cgi

选择需要的版本,测试版本Apache 2.4.33,下载地址:

https://www.apachehaus.com/cgi-bin/download.plx?dli=wUWZ1allWW00kej9iUG5UeJVlUGRVYRdnWzQmW

2、安装

解压后通过命令行安装:

cd Apace24bin
httpd -k install

3、开启mod_rewrite模块

编辑文件: Apace24confhttpd.conf

找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉#

4、开启支持.htaccess文件

编辑文件: Apace24confhttpd.conf

定位如下位置:

DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All #
# Controls who can get stuff from this server.
#
Require all granted
</Directory>

AllowOverride None改为AllowOverride All

5、编写.htaccess文件,配置规则

保存路径为Apace24htdocs

测试规则为将1.html重定向到2.html,具体内容如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule 1.html 2.html
</IfModule>

使用记事本打开,另存为文件,文件名为".htaccess"

注:

文件名包含引号",如下图

2.html保存在Apace24htdocs,内容如下:

<html>
<body>
True page
</body>
</html>

6、开启apache服务

httpd.exe -k start

7、测试

访问http://127.0.0.1/1.html

返回内容True page,代表网页被重定向到了2.html

8、补充

apache的日志路径为Apache24logs

mod_rewrite的日志保存在error.log

文件Apace24confhttpd.conf可指定日志记录等级

0x03 Ubuntu系统下安装配置Apache mod_rewrite


1、下载安装

sudo apt-get install apache2

2、开启mod_rewrite模块

sudo a2enmod rewrite

3、开启支持.htaccess文件

编辑文件: /etc/apache2/apache2.conf

定位如下位置:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Di 大专栏  CIA Hive Beacon Infrastructure复现1——使用Apache mod_rewrite实现http流量分发rectory>

AllowOverride None改为AllowOverride All

4、编写.htaccess文件,配置规则

保存路径为varwwwhtml

测试规则为将1.html重定向到2.html,具体内容如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule 1.html 2.html
</IfModule>

2.html保存在varwwwhtml,内容如下:

<html>
<body>
True page
</body>
</html>

5、开启apache服务

sudo /etc/init.d/apache2 restart

6、测试

访问http:/IP/1.html

返回内容True page,代表网页被重定向到了2.html

7、补充

apache的日志路径为/var/log/apache2/

mod_rewrite的日志保存在error.log

文件/etc/apache2/apache2.conf可指定日志记录等级

0x04 规则配置技巧与实例


1、将所有网页重定向至 https://www.baidu.com

.htaccess文件内容如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule . https://www.baidu.com
</IfModule>

2、过滤Request Header

(1) User Agent

只针对特定User Agent的请求进行重定向

实例:

使用Mac下的Safari浏览器访问1.html,将其重定向到2.html

.htaccess文件内容如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond "%{HTTP_USER_AGENT}" "Macintosh; Intel Mac OS X 10_9_3" [NC]
RewriteRule 1.html 2.html
</IfModule>

参数说明:

RewriteCond "%{HTTP_USER_AGENT}" "Macintosh; Intel Mac OS X 10_9_3" [NC]代表判定条件,判断HTTP_USER_AGENT是否包含字符串"Macintosh; Intel Mac OS X 10_9_3"(大小写不敏感)

NC: 字符比较,大小写不敏感

详细参数说明可参考:

https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond

1.使用curl进行测试

模拟Chrome浏览器:

curl -A "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" http://192.168.62.137/1.html

并没重定向,如下图

模拟Mac Safari浏览器:

curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A" http://192.168.62.137/1.html

网页重定向,获得2.html的内容,如下图

2.Chrome浏览器修改User Agent的方法

访问页面,F12 -> More tools -> Network conditions,选择User agent 为 Safari —— Mac

如下图

####(2) Peferer

只针对特定来源的请求进行重定向

实例:

如果来源为test.com,访问1.html时将其重定向到2.html

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond "%{HTTP_REFERER}" "test.com" [NC]
RewriteRule 1.html 2.html
</IfModule>

使用curl进行测试:

curl -e "test.com" http://192.168.62.137/1.html

(3) 其他可供选择的过滤条件

如下图

注:

图片来源于https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond

补充:

Jeff Dimmock在他的博客分享了使用mod_rewrite配置规则的心得,值得学习,地址如下:

https://bluescreenofjeff.com/tags

0x05 小结


本文介绍了Windows系统和Ubuntu系统下安装配置Apache mod_rewrite的方法,分享配置技巧与实例,在技术研究的角度实现了根据请求条件进行http流量分发。

下篇文章将要介绍https的流量分发实现。


LEAVE A REPLY

上一篇:CIA Hive Beacon Infrastructure复现2——使用Apache mod_rewrite实现https流量分发

下一篇:利用Assembly Load & LoadFile绕过Applocker的分析总结

CIA Hive Beacon Infrastructure复现1——使用Apache mod_rewrite实现http流量分发的更多相关文章

  1. 【原创】大叔问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

    spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.h ...

  2. ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

    Sqoop导入mysql表中的数据到hive,出现如下错误:  ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.Hi ...

  3. 开启Apache mod_rewrite模块(解决404 Not Found)

    网站搭建完成了,进入登录界面就是访问不了. 原因大概是没有开启Apache mod_rewrite模块,或者没有配置完全. 步骤1: 启用mod_rewrite模块 在conf目录的httpd.con ...

  4. Apache mod_rewrite实现HTTP和HTTPS重定向跳转

    当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS(即端口443).这时候你可以用以下的方式来做到:(Apache mod_rewrite) ...

  5. 关于Apache mod_rewrite的中文配置、使用和语法介绍(实现URL重写和防盗链功能)

    以数据库后台驱动的动态内容的网站,经常会遇到这些的问题: 当在浏览器的地址栏输入一个无效的参数时,会出现数据库的错误提示,这是一个安全的隐患 搜索引擎无法收录你的所有网页 网页的链接地址是一系列的参数 ...

  6. openSUSE中启用apache mod_rewrite

    1. 编辑 "/etc/sysconfig/apache2"文件 查找 APACHE_MODULES,你应该会找到一行像 APACHE_MODULES="actions ...

  7. <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)

    原创博客,转载请联系博主! 摘要:本文介绍了如何使用docker快速搭建一个可以从外部访问的mysql服务容器,和由docker搭建的分布式Hadoop文件系统,并且使用ApacheSqoop完成将m ...

  8. Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous

    今天使用JDBC来操作Hive时,首先启动了hive远程服务模式:hiveserver2 &(表示后台运行),然后到eclipse中运行程序时出现错误: java.sql.SQLExcepti ...

  9. 开启Apache mod_rewrite模块完全解答

    启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...

随机推荐

  1. 吴裕雄--天生自然Linux操作系统:Linux 系统目录结构

    登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 树状目录结构: 以下是对这些目录的解释: /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot: ...

  2. 使用Anaconda安装TensorFlow

    conda create -n tensorflow python=2.7 # or python=3.3, etc. pip install --ignore-installed --upgrade ...

  3. Linux-竟态初步引入

    (1).竟态全称是:竞争状态,多进程环境下,多个进程同时抢占系统资源(内存.CPU.文件IO). (2).竞争状态对于操作系统OS来说是很危险的,此时的操作系统OS如果没有处理好就会造成结果不确定. ...

  4. java内存区域与内存溢出异常(2)

    3.本地方法栈 本地方法栈与虚拟机栈作用相同,不同的是虚拟机栈为java方法服务,本地方法栈为native方法服务,本地方法栈会抛出StackOverFlowError和OutOfMemoryErro ...

  5. typescript 使用的几种情况

    接口的创建 可以使用 type 和 interface 来创建类型 type 特有的优点: 声明基本类型别名,联合类型,元组等类型 type S = string; type IFoo = IBar ...

  6. C#通过窗体应用程序操作数据库(增删改查)

    为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...

  7. C++ malloc()函数的注意点及使用示例

    1.malloc()函数的头文件是stdlib.h,其函数声明如下: void* malloc(size_t size); 其中参数size_t size表示动态内存分配空间的大小,以字节为单位. s ...

  8. Linux系统cp:ommiting directory xxx问题解决

    在linux下执行复制命令:  cp nginx-1.16.0 nginx-1.16.0-recovery 报错:  cp: omitting directory ‘./nginx-1.16.0’ 出 ...

  9. nodepad++ 让所有的加号收缩折叠展开的快捷键

    折叠所有层次 Alt+0(这是零) 展开所有层次 Alt+Shift+0

  10. Python运维中常用的_脚本

    前言 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件. ...