분류 전체보기 71

#1 Best of the Best 9기 수료 후기 - 자기소개서

#0 Best of the Best 9기 수료 후기 - 활동경험 아마 BoB를 준비하는 분들이 가장 많이 힘들어하는 게 자기소개서가 아닐까 생각한다. 질문도 7개로 가뜩이나 많은데 각 질문마다 1000자 이내로 작성해야 해서 분량 압박을 많이 받는 것 같다. 이전 기수 중에는 2000자를 쓰기도 했다는 거 같은데 1000자도 꽤나 힘들다. 하지만 할 말이 많은 질문에 대해서는 1000자 이내로 줄이느라 고생하기도 한다. 그러니 마감 기한까지 미루기 보다는 평소에 조금씩이라도 써두는 게 제일 좋다. 글은 다듬고 다듬어도 내일 다시 보면 맘에 안들기 마련이다. 나는 오히려 다듬다가 마감 기한 놓칠 뻔 했다. 자신이 보안에 관심이 많았고, 관심이 많은 만큼 해온 것이 많다면 '뭘 써야하지?'라는 고민은 크게 ..

#0 Best of the Best 9기 수료 후기 - 활동경험

5월 6일부터 BoB 10기 모집이 시작됐다. 수료식을 마친지 얼마 안 된 것 같은데 벌써 10기 모집 공고가 뜨는 것을 보고 제법 많이 놀랐다. BoB에 지원하는 모든 지원자가 그렇듯이 나 역시도 BoB에 들어가고 싶다는 열망이 강했다. 그래서 9기 모집 공고가 뜨기 전부터 BoB 지원 후기나 수료 후기 등을 읽으며(길길 멘토님 글이 정말 큰 도움이 됐다) 자소서를 다듬곤 했다. 좀 늦긴 했지만 이번 10기를 준비하는 분들에게도 나의 글이 도움이 됐으면 하는 바람으로 9기를 준비했던 과정을 포함해 글을 남겨보려 한다. 여러 편으로 작성할 생각이니 관심있는 분들은 재밌게 읽어줬으면 좋겠다. 참고로 BoB 수료 후기 글이 생각보다 많다. 구글뿐만 아니라 네이버, 다음에서도 검색해보자. 구글 검색에선 못 본..

vk 셀 복구하기

2019 DFC AF 200 문제는 하이브 파일의 레지스트리를 복구하고, 복구한 레지스트리에서 숨어 있는 파일을 찾아내는 문제였다. vk 셀 복구하는 방법을 AF 200 문제로 알아보자. 하이브 파일은 레지스트리 헤더와 여러 개의 하이브 빈 파일로 이루어져있다. 하이브 빈은 또 여러 개의 셀을 포함하고 있다. 셀은 레지스트리에서 키와 값을 저장하는 구조체다. 종류에 따라 각각의 시그니처를 가지고 있는데, 키를 의미하는 셀은 nk라는 시그니처를, 값을 가지고 있는 셀은 vk라는 시그니처를 가지고 있다. 010 Editor로 2019 DFC AF200 문제로 주어진 하이브 파일을 열면 레지스트리 헤더와 하이브 빈 구조들을 볼 수 있다. 하이브 빈 구조들은 시작 오프셋 값이 모두 0x1000(4096)의 배수..

Registry에서 최근 로그온 사용자 찾기

OtterCTF 메모리 포렌식 문제를 풀다가 현재 시스템에 로그인 중인 사용자를 알아봐야 할 필요가 생겼다. 열심히 구글링 해보니 아래 레지스트리 경로에 마지막으로 로그온 한 사용자가 저장되어 있다고 한다. 제법 유명한 디지털 포렌식 책에도 마지막 로그온 사용자 정보를 아래 레지스트리에서 볼 수 있다고 적혀있다. * Key: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon * Value name: DefaultUserName 그런데 값 이름이 DefaultUserName인게 영 찝찝했다. 영문 사이트들에서도 시스템 부팅 시 자동 로그온 설정할 때 이 레지스트리 값을 건드리고, 마지막 로그온 사용자를 알아볼 때 사용하진 않는 것 같았다. OtterC..

Login Data 패스워드 복호화

Chrome은 사용자의 편의를 위해 로그인할 수 있는 사이트마다 ID와 패스워드를 기억하는 기능을 제공한다. 다른 브라우저도 이 기능을 지원하긴 할텐데 개인적으로 오페라만 사용하다보니 확신은 못하겠다. 일반적으론 패스워드를 해시화 해 저장한다고 알고있지만, 위 기능처럼 패스워드를 평문으로 기억해야 할 필요가 있는 경우라면 해시화 해 저장할 수 없다. 해시값에서 원문으로 되돌릴 수 없기 때문이다. Windows 용 Chrome에서는 DPAPI인 CryptProtectData를 사용해 패스워드를 암호화 한 다음 SQLite로 저장한다. DB 파일의 이름은 "Login Data"이며, History 파일과 같은 폴더에 위치해있다. * %USERPROFILE%\AppData\Local\Google\Chrome\..

OtterCTF WriteUp - Closure

멀웨어의 startAction 메서드를 보면 사용자의 바탕화면을 파일 암호화의 최초 폴더로 잡고 있다. 또한 encryptDirectory 메서드를 보면 암호화 할 파일들의 확장자 목록을 갖고 있다. 암호화 대상인 txt 파일을 먼저 찾아봤다. Rick 계정의 바탕화면에 Flag.txt가 보인다. HxD로 열어보니 임의 비트열 뿐이다. 암호화 된 듯 하다. 48바이트 이후론 모두 NULL 바이트여서 제거했다. 멀웨어의 EncryptFile 메서드를 보면 앞서 생성했던 15자리의 암호키를 SHA256로 해시화한 후 AES_Encrypt 메서드의 암호키로 넘기는 걸 볼 수 있다. public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordByte..

CTF/OtterCTF 2020.04.03

OtterCTF WriteUp - Recovery

멀웨어의 Form1 코드를 보면 startAction이라는 메서드가 있다. CreatePassword를 호출하고 SendPassword, encryptDirectory 등을 차례로 호출한다. CreatePassword로 받은 값을 encryptDirectory에 넣는 걸로 보아 암호화에 사용되는 암호키 같다. CreatePassword 메서드는 정의된 문자열 범위 내에서 랜덤하게 문자를 뽑아 새로운 문자열을 만들어 반환한다. SendPassword는 컴퓨터 이름과 사용자 이름, 암호키를 하나로 합치기만 하고 아무 일도 안한다. (아마 실제 악성코드에서 서버로 키 정보를 전송하는 루틴을 삭제한 듯 하다.) 메모리 상에 3개 문자열(컴퓨터 및 사용자 이름, 암호키)을 연결한 문자열이 잔재해 있을 지도 모른다..

CTF/OtterCTF 2020.04.03

OtterCTF WriteUp - Bit 4 Bit Write-up

앞서 추출했던 악성코드가 .Net 프로그램임을 확인했었다. C#으로 만들어졌으리라 추측할 수 있다. ILSpy를 사용해 디컴파일 하면 Form1, Form2, Form3 총 3개의 클래스가 나온다. 그 중 Form3에서 정체불명의 문자열이 보였다. Bitcoin 주소 형식은 위와 같다. 1이나 3, bc1으로 시작하고, 27~34자 정도의 알파벳 및 숫자를 사용하며 0(숫자), O(대문자 o), I(대문자 i)는 사용하지 않는다. 위에서 찾은 문자열은 비트코인 주소 형식과 유사하다. CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}

CTF/OtterCTF 2020.04.03

OtterCTF WriteUp - Path To Glory Write-up

좋지 않은 습관이라고 하니 우선 토렌트 먼저 조사한다. 멀웨어인 vmware-tray.exe의 부모 프로세스였던 "Rick And Morty"를 키워드로 yarascan으로 BitTorrent.exe 메모리를 서치했다. 처음부터 exe 파일을 다운로드 하는 토렌트 파일이 보인다. filescan으로 토렌트에 의해 다운로드 된 exe 파일을 찾아봤다. 총 3개가 나왔는데 2번째 파일은 텍스트 파일이었고 나머지 2개(1, 3번째)가 실행파일이었다. md5 해시값을 비교해보면 두 실행파일은 같은 파일임을 알 수 있다. 1.exe를 virustotal에 올리니 악성 프로그램으로 나온다. 토렌트를 통해 멀웨어가 유입되었음이 확실하다. .torrent 파일을 덤프뜨기 위해 filescan으로 오프셋을 알아낸다. 두..

CTF/OtterCTF 2020.04.03