ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OtterCTF Memory Forensic write up
    $ Capture The Flag $ 2020. 1. 16. 21:29

     

    다운로드 받은 메모리 파일의 user password를 구하는 문제 입니다.

    먼저 해당 메모리 파일의 Profile을 알아 보겠습니다.

     

    Win7SP1x64 를 이용하면 될 것 같습니다.

    User의 Password를 알아 내기 위해서 SAM 파일과 SYSTEM 파일을 이용해서 NTLM Hash을 알아 보겠습니다.

     

     

    518172d012f97d3a8fcc089615283940을 해시값으로 여러 NTLM 해시 크래킹 사이트를 이용했지만 성공하지 못했습니다.

    이번에는 문자열로 Password를 시스템 LSA 암호에 저장할수도 있기 때문에 lsadump 플러그인을 이용해 보겠습니다.

     

    DefaultPassword에 MortyIsReallyAnOtter이 있습니다.

     

    Flag : CTF{MortyIsReallyAnOtter}

     

     

    해당 문제에서 PC의 이름과 IP 주소를 찾는 문제 입니다.

     

    192.168.202.131 주소가 Local Address 라는 것을 알 수 있습니다.

     

    Flag : CTF{192.168.202.131}

     

    이번에는 Hostname(PC name)을 알아 보겠습니다.

    SYSTEM 레지스트리 파일에서 ControlSet001\Control\ComputerName\ComputerName 경로에 존재하는 KEY를 출력해보겠습니다.

    실제로 위의 경로로 들어가보면 아래와 같이 저의 컴퓨터 이름을 알 수 있습니다.

     

    이제 메모리덤프 파일의 컴퓨터 이름을 알아 보겠습니다.

     

    컴퓨터이름은 WIN-L06FAF3DTFE 입니다.

     

    Flag : CTF{WIN-L06FAF3DTFE}

     

     

    게임을 좋아하는데 그가 하는 게임의 이름과 서버의 IP를 구하는 문제입니다.

    게임을 한다는 것은 실행을 했을 것이고, 그렇다면 Process가 실행 되어 있을 것 입니다.

     

     

    아래에 Rick And Morty라는 의심스러운 프로세스가 있었지만 그냥 애니메이션 이름이었습니다.

    그가 좋아하는 게임이름은 LunarMS입니다.

     

    Flag : CTF{LunarMS}

     

    서버의 IP는 netscan으로 확인해 보겠습니다.

     

    서버의 ip는 77.102.199.102 입니다.

     

    Flag : CTF{77.102.199.102}

     

     

    Lunar-3이라고 불리는 채널에 접속을 한 계정이 있는데 그 계정의 이름이 무엇인지 찾는 문제 입니다.

     

    해당 게임 프로그램 내에 유저 이름이 있을 것이기 때문에 PID 708의 Dump을 떠서 검색해 보겠습니다.

     

    strings 명령어로 Lunar-3 을 검색해 보겠습니다.

     

    Username인 0tt3r8r33z3 을 찾았습니다.

     

    Flag : CTF{0tt3r8r33z3}

     

     

    문제를 보면 로그온한 사용자의 캐릭터의 이름뒤에  0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} 해당 시그니처가 있다고 합니다.

    앞서 PID 708 Dump를 떠뒀으니 확실한 시그니처인 5a 0c 00 00 만 검색해 보겠습니다.

    많은 5a 0c 00 00 값 중에 뒤에 아래와 같은 문자열을 확인 할 수 있습니다.

     

    M0rtyL0L이 캐릭터의 이름입니다.

     

    Flag : CTF{M0rtyL0L}

     

     

    Silly Rick은 항상 이메일의 암호를 잊어 버리기 때문에 온라인에 저장된 암호 서비스를 이용한다고 합니다.

    패스워드를 복사해서 붙여넣기 해서 틀리지 않게 한다고 합니다. 이메일의 암호는? 이라는 문제입니다.

     

    복사해서 붙여넣기를 하기 때문에 암호는 클립보드에 남을 수 밖에 없습니다.

    clipborad 플러그인을 이용해서 확인해 보겠습니다.

     

    Flag : CTF{M@il_Pr0vid0rs}

     

     

    악성코드에 감염이 되었고, 악성코드 프로세스 이름을 찾아라(확장자 포함) 이라는 문제입니다. 

    pslist 를 이용해서 PID 값과 PPID 값을 비교해 가며 보면 아래와 같습니다.

     

    vmware-tray.exe 프로세스를 검색해 보면 vmware를 실행하면 자동으로 시작프로그램에 등록이 됩니다.

    이렇게만 보면 이상하지 않는 프로세스 인데 PPID를 보면 Rick And Morty 프로세스 하위에 오는 프로세스인데 PPID 값이 부모프로세스를 의미하는데 부모 프로세스가 vmware 가 아니라는 점이 수상합니다.

     

    Flag : CTF{vmware-tray.exe}

     

     

    불법적인 습관으로 인해서 악성코드가 PC에 감염 됬다고 합니다.

     

    프로세스를 확인해 보면 토렌트 관련 프로세스가 실행되고 있는 것을 확인 할 수 있습니다.

    실제로 토렌트에서 파일을 다운받을 때 악성코드가 심어져서 다운로드 되는 경우가 많다고 합니다.

     

    filescan 플러그인을 이용해서 torrent 가 포함된 경로에 있는 파일을 찾아 보겠습니다.

     

    0x000000007dae9350 파일을 추출해보겠습니다.

     

    맨 아래줄에 M3an_T0rren7_4_R!ck 라는 문자열이 있습니다

     

    Flag : CTF{M3an_T0rren7_4_R!ck}

     

     

    파일이 어딘가에 다운로드 되었다는 것을 알게 되었으므로 Chrome을 통해 인터넷 사용 기록을 살펴 보았습니다.

    filescan을 이용해서 Chrome의 History 파일을 찾아서 dumpfile을 만들어 보겠습니다.

     

    추출된 파일인 file.None.0xfffffa801a5193d0.dat 파일이 어떤 파일인지 확인해 보니 db 파일이였습니다.

     

    DB Browser for SQLite 를 이용해서 db파일을 열어 보겠습니다.

     

    site_url 이라는 칼럼이 존재 하는데 아래의 쿼리문을 입력해 보겠습니다.

     

    다운로드 한 파일의 site_url가 mail.com 으로 되어 있는 것을 확인 할 수 있습니다.

     

    이메일 관련 데이터를 추출해주는 툴인 bulk_extractor을 이용해서 email을 찾아보도록 하겠습니다.

     

     

    ./aaa/email.txt 를 검색해 보면 아래와 같습니다.

     

    rickopicko@mail.com 인것을 확인 할 수 있습니다.

    비밀번호는 앞서 클립보드에서 찾았었습니다.

     

    mail.com에 들어가서 로그인후 메일을 확인해 보겠습니다.

     

    Flag : CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in}

     

     

    공격자의 비트코인 주소를 찾는 문제입니다.

     

    앞서 확인했던 악성코드 프로세스인 vmware-tray.exe을 procdump 플러그인을 이용해서 문제를 해결해 보겠습니다.

     

    악성코드인 executable.3720.exe 는 아래와 같은 파일입니다.

     

    .Net assembly 이기 때문에 디컴파일러인 ILSpy 를 이용해서 디컴파일 후에 비트코인 주소를 확인해 보겠습니다.

     

    비트코인의 주소는 1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M 이라는 것을 알 수 있습니다.

     

    Flag : CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}

     

     

    악성코드에 이상한 점이 있다고 합니다.

    앞에서 추출한 excutable.3720.exe 을 가지고 확인해 보겠습니다.

     

    파일 카빙을 한번 해보겠습니다.

     

    파일 카빙으로 png 파일이 있다는 것을 확인 할 수있었습니다.

     

    Flag : CTF{S0_Just_M0v3_Socy}

     

     

    Rick의 파일을 복구 해야한다고 하는데 복구에 필요한 비밀번호를 찾는 것이기 때문에 악성코드 디컴파일을 해야 할 것 같습니다.

     

    해당 악성코드 파일을 ILSpy에 넣어 password를 검색해보면 아래와 같은 코드를 확인 할 수 있습니다.

     

    password를 만드는데 있어서 computerName-userName-password 를 넘기는것 같습니다.

    그래서 WIN-LO6FAF3DTFE-Rick 를 검색해 보도록 하겠습니다.

    해당 악성코드는 .net이기 때문에 UTF-16으로 인코딩 하기 때문에 -el 옵션을 넣어 줘야 합니다. 

     

    password는 aDOBofVYUNVnmp7 입니다.

     

    Flag : CTF{aDOBofVYUNVnmp7}

     

     

    암호를 얻었으니 Rick의 파일을 해독해 달라고 합니다.

     

    하지만 어떤 파일을 복호화 해야하는지 모르겠습니다.

    filescan 플러그인을 사용하던중 Flag.txt를 발견 했습니다.

     

    Flag.txt를 추출 해보겠습니다.

     

    해당 파일을 HxD를 이용해서 확인해 보면 아래와 같습니다.

     

    진짜 암호화 되어 있습니다

    그렇기 때문에 앞에서 구한 암호인 aDOBofVYUNVnmp7를 이용해서 복호화를 해야할 것 같습니다.

    앞서 악성코드에 Hidden Tear 이라는 문자열을 확인 했습니다.

    해당 문자열 관련 복호화 툴이있는지 확인 해봤는데 GUI 복호화툴과 깃허브 복호화 툴이 있습니다.

     

    GUI 복호화 툴 :  https://www.bleepingcomputer.com/download/hidden-tear-decrypter/

    깃허브 복호화 툴 :  https://github.com/goliate/hidden-tear

     

    GUI 복호화 툴을 file명령어로 확인해 보면 .NET Assembly 인것을 알 수 있습니다.

     

    ILSpy에 넣어서 확인해보면...

     

    파일의 확장자가 .locked 이어야 한다는 것을 알 수있습니다.

     

    또한 00 패딩을 전부 지워야 합니다.

    HiddenTearDecrypter을 아래와 같이 이용해 보겠습니다.

     

    Flag 파일이 출력이 되었고 확인해 보면 아래와 같습니다.

     

    Flag : CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}

    '$ Capture The Flag $' 카테고리의 다른 글

    NeverLAN CTF Write up  (0) 2020.02.14
    HackTMCTF Write up  (0) 2020.02.06
    UTC-CTF write up  (0) 2019.12.22
    X-MASCTF Write up  (0) 2019.12.21
    RITSEC CTF Write up  (0) 2019.11.20

    댓글

Designed by Tistory.