전체 글 69

Babuk v3 분석

1. 개요 Babyk으로도 알려진 Babuk 랜섬웨어는 2021년 초에 처음 발견된 서비스형 랜섬웨어(RaaS)로, 주요 데이터의 유출을 목적으로 하며 기업을 대상으로 공격을 진행한다. 당해 6월에 Babuk 랜섬웨어의 빌더가 온라인에 유출되었으며, 이후 많은 변종이 공개되었다. 9월, Babuk 랜섬웨어 그룹의 멤버라고 주장하는 한 공격자가 Babuk 랜섬웨어의 전체 소스코드를 랜섬웨어 해킹 포럼에 유출하였다. 이를 바탕으로 한 달 뒤에 Avast에서 무료 랜섬웨어 암호 해독 도구를 만들기도 했다. 소스코드도 공개되었고 심지어 복호화 툴도 만들어졌지만, 최초로 발견된 지 2년이 지난 지금도 Babuk 소스 코드를 기반으로 만든 변종 랜섬웨어들이 다수 발견되고 있다. 이에 Babuk 랜섬웨어가 어떤 식으..

악성코드 분석 2023.06.20

[Practical Malware Analysis] Lab 07-03

실습 7-3) ※ 이 실습은 컴퓨터에 상당한 해를 입힐 수 있고 설치되면 삭제하기 어렵다. 실행 이전 상태로 돌릴 수 있는 스냅샷이 존재하는 가상머신이 아니라면 실행하지 말자. 책에서 이번 실습은 정적 방법과 동적 방법 모두를 사용하여 분석하되, 너무 세부적인 것 보다는 큰 그림에 초점을 맞추고 분석을 해보라고 한다. ● 기초 정적 분석 먼저 03.exe를 살펴보자. strings를 보면 "WARNING_THIS_WILL_DESTROY_YOUR_MACHINE"이라는 아주 위협적인 문구를 볼 수 있고, "kernel32.dll" 이름과 더불어 이와 비슷한 "kerne132.dll" 문자열을 볼 수 있다. 문자열만 놓고 유추하면 "kerne132.dll"이 정상 파일인 "kernel32.dll"처럼 보이게 ..

[Practical Malware Analysis] Lab 07-01, 02

실습 7-1) - 문제를 풀기 전에 해당 프로그램에 대한 분석을 먼저 진행해보았다. 정적 분석을 먼저 진행해보았다. strings에서는 위와 같은 문자열들을 볼 수 있었다. "MalService"라는 이름을 보면 서비스를 이용하지 않을까 추측할 수 있고, "http://www.malwareanalysisbook.com" 주소를 보면 해당 주소를 활용하여 통신하지 않을까 추측해 볼 수 있다. 사용된 import 함수들 중 일부를 캡쳐해왔다. 해당 함수들의 기능을 보았을 때 이 프로그램은 크게 서비스 생성, 인터넷 연결, 뮤텍스 생성, 시간과 관련된 무슨 작업, 파일 생성 등의 행위를 할 것으로 보인다. - 다음은 동적 분석을 진행해보았다. 01.exe 파일을 실행시킨 후 ProcExplorer로 관찰해본 ..

[Practical Malware Analysis] Lab 06

6장의 실습 목표는 코드 구조를 분석해 프로그램의 전반적인 기능을 이해하고자 하는 데 있다. 각 실습은 5장을 토대로 하고, 네 개의 구조로 이뤄진 하나의 복잡한 악성코드 조각을 분석해본다. 실습 6-1) 1. main이 호출하는 서브루틴만으로 발견한 주요 코드 구조는 무엇인가? - main의 서브루틴인 sub_401000으로 들어오면 위 사진과 같이 InternetGetConnectedState 함수의 실행결과에 따라 분기가 나뉘는 것을 볼 수 있다. InternetGetConnectedState 함수는 인터넷이 연결되었는지 확인해서 연결될 경우에는 TRUE(1), 아닐 경우에는 FALSE(0)를 반환한다. 위 구조는 if 구조로 "cmp [ebp+var_4], 0"에서 반환값이 TRUE인지 FALSE..

[Practical Malware Analysis] Lab 05

IDA Pro만을 이용해 파일 Lab05-01.dll 내의 악성코드를 분석하라. 이 실습의 목적은 IDA Pro를 직접 다루는 데 있다. 이미 IDA Pro를 사용해 본 적이 있으면 다음 문제를 무시하고 악성코드 리버싱에 초점을 맞춰도 좋다. 질문) 1. DllMain의 주소는 무엇인가? - dll 파일을 열면 보이는 지점이 바로 DllMain이다. 0x1000D02E 2. Imports 윈도우를 이용해 gethostbyname을 탐색해보자. 임포트 위치는 어디인가? - imports 윈도우에서 이름을 검색할 수 있다. 0x100163CC 3. gethostbyname를 호출하는 함수는 몇 개 인가? - 함수명을 누르고 ctrl+x를 누르면 xref(상호참조)를 볼 수 있다. 총 5개의 함수에서 9번 호..

[Practical Malware Analysis] Lab 03

실습 3-1) 1. 악성코드의 임포트 함수와 문자열은 무엇인가? - 01.exe 파일의 정보를 확인한 결과 패킹되어있지는 않았으며, 어셈블리로 제작된 프로그램으로 보인다. pestudio를 이용해 해당 파일의 임포트 함수와 문자열들을 확인한 결과, 임포트 함수로는 ExitProcess 만을 볼 수 있었다. 얻을 수 있는 문자열 중 악성행위에 이용될 것으로 의심되는 문자열들은 위 사진에서 빨간펜으로 골라놨다. 자세한 내용은 동적분석까지 하고서 파악할 수 있을 것 같다. 보통 프로그램의 임포트 함수로 ExitProcess만 존재하는 경우는 거의 없기 때문에, 뭔가 숨겨놓은 것이 있지 않을까 의심이 간다. 2. 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가? - Procxp, Procmon을 이용해 동적..

[Practical Malware Analysis] Lab 01

실습 1-1) 1. http://www.VirusTotal.com/에 파일을 업로드한후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가? - 이 글을 작성한 시점에서는 이미 여러 안티바이러스에 악성파일로 인식되었다. 2. 이 파일은 언제 컴파일됐는가? - 2010. 12. 19에 컴파일된 것으로 보인다. 3. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? - Exeinfo PE로 분석한 결과 패킹이 되어있지 않아 보인다. 4. 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가? - 자세한 것은 동적분석도 해야 알겠지만, 정적분석만으로 보았을 때 01.exe 파일에서는 CopyFileA가 그나마 악성코드 행위와 관련 있어 보인다..

[CodeEngn] Advance RCE L11 문제 풀이

문제Serial이 94E7DB1B 일때 Name은 무엇인가해당 Serial에 대한 정답이 여러개 나오는 문제이며 Contact로 보내주시면 인증키를 보내드리겠습니다해당 Serial에 대해서 'Serial accepted' 메시지가 나와야 합니다. 풀이 프로그램을 실행하면 Name과 Serial을 입력가능한 창과 여러 버튼들이 보인다. Name에는 기본적으로 Pineware가 써져 있어서 Serial로 아무 값이나 넣은 뒤 "OK"를 눌렀더니, 인증 실패 문구를 볼 수 있었다. 해당 정보를 힌트 삼아 프로그램을 분석하면 좋을 것 같다. PEiD로 프로그램을 분석해보니, "Nothing found *"를 볼 수 있었다. PEiD에는 등록되지 않은 것으로 작성된 프로그램으로 보인다. ollydbg로 분석을..

war game/Codeengn 2023.03.11

[CodeEngn] Advance RCE L10 문제 풀이

문제 Serial이 WWWCCCJJJRRR 일때 Name은 무엇인가 Hint 1 : 4글자임 Hint 2 : 정답으로 나올 수 있는 문자열 중 (0~9, a~z, A~Z) 순서상 가장 먼저 오는 문자열 풀이 프로그램을 실행하면 Name과 Serial을 순서대로 입력하도록 문구가 나온다. Name에 아무 값("name")을, Serial에는 문제에서 준 "WWWCCCJJJRRR"을 입력했고 결과는 잘못된 Serial이라는 문구가 출력되었다. PEiD로 프로그램을 열어보니 Dev-C++로 작성된 프로그램임을 알 수 있었다. ollydbg로 분석을 진행해 보자. 단서가 될만한 부분을 찾기 위해 "All Referenced Text Strings"를 확인해 보니 성공 문구로 보이는 문자열을 사용한 지점을 찾을 ..

war game/Codeengn 2023.03.09

[CodeEngn] Advance RCE L09 문제 풀이

문제 Password는 무엇인가 풀이 프로그램을 실행하면 한 줄의 문구와 Username, Password를 입력할 수 있는 창이 보인다. Username과 Password에 아무 값이나 입력을 하니 잘못된 username, password라는 문구를 출력하는 것을 볼 수 있다. PEiD로 정보를 확인해 보니 "Nothing found *"를 볼 수 있었다. 이 프로그램은 PEiD에 등록되지 않은 방법으로 작성된 프로그램인 것 같다. ollydbg로 프로그램을 분석해 보자. 문제를 해결하기 위한 힌트가 있지 않을까 싶어 "All Referenced Text Strings"를 확인해 보았다. 거기에는 실패했을 때 출력되는 문구는 물론, 성공했을 때 출력되는 것으로 보이는 문구도 있었다. 해당 문구가 사용된..

war game/Codeengn 2023.03.07