분류 전체보기 154

KUCIS : 데프콘 문제로 풀어보는 메모리 포렌식

문제 1 : 주어진 defcon.mem 메모리의 SHA1 해시 값은 무엇인가? 문제 4 : wscript.exe 프로세스의 자식 프로세스 이름은? 명령어 = vol.exe -f Defcon.mem --profile=Win7SP1x64 pstree (프로세스를 트리구조로 봐야함) ... 으로 들어가 있는 부분이 자식 프로세스 문제 6 : 악성 프로세스로 인하여 연결된 세션의 공격자 IP는? netscan입력했을 때 State가 ESTABLISHED 인것들을 찾아봄. 포트 번호도 이상하고 파일 이름도 이상한게 있음. 이게 악성파일인듯 칼리에서 msfvenom 할 때 포트 번호 지정 안하면 4444가 디폴트로 지정됨. 문제 7 : VCRUNTIME140.dll을 로드하고 있는 프로세스의 이름? 문제 8: 악성..

카테고리 없음 2022.07.14

리버싱 - 코드엔진 basic -06

serial과 OEP(Original Entry Point)를 찾아야하는 문제 Upx로 패킹돼있는 파일이므로 언패킹을 해주었다. 처음에 언패킹을 안하고 IDA로 열었을 때는 함수가 start 하나밖에 안떴었는데 이젠 제대로 뜬다. 일단 문자열 참조로 serial이 맞았다고 보여주는 문자열이 어디와 연결돼있는지 확인해보기로 했다. 의심되는 게 일단 You got it ;) 과 Good Job! 부분이다. sub_401030 함수와 연관있는 것 같다. sub_401030 함수로 이동하니까 GetDlgItemTextA를 call하는게 보인다. sub_401320, sub_401290도 call 하고 있다. 이 세 가지 call을 한 번

카테고리 없음 2022.07.12

리버싱 09 - 혼자 실습

주어진 chall3.exe 파일을 윈도우 파워쉘에서 실행함. 맞는 문자열을 입력해야 Correct가 뜨고, 그 정답이 뭔지를 알아내야 함. IDA가 찾은 main 함수가 바로 나옴. 일단 Strings에서 Correct 문자열을 찾아보고 해당 문자열이 어디서 참조되고 있는지 확인해보겠음. 역시 main함수에서 참조되고있음. 지난 실습을 하면서 정말 많이 본 코드가 바로 등장함. 생겨먹은 걸 보면 sub_1400011B0은 printf 함수, sub_140001210은 scanf 함수로 보임. 그리고 sub_140001000 함수가 v4를 인자로 받아서 입력값을 검증하는 함수겠지 싶음. 함수 내부에 있는 sub_140001080을 디컴파일하면 vfprintf가 나옴. 이를 통해 sub_1400011B0은 ..

Dreamhack 2022.07.12

리버싱 08 - Patch

플래그를 이미지로 출력해주지만 일부가 가려져있어 플래그를 읽을 수 없는 상태의 프로그램. - 파일 실행 - 정적 분석 - 동적 분석 - 파일 바이너리 수정 다운 받은 파일을 실행해보면 플래그가 가려져있는 것을 볼 수 있음. IDA로 Patch.exe 파일을 실행함. 이 문제는 WinAPI를 이용해 만들어진 GUI 프로그램이기 때문에 WinMain 함수를 찾아야 함. 이 함수는 보편적으로 윈도우를 생성하고 관련된 초기화 작업을 진행함. 이와 고나련된 API를 상호참조하는 방식으로 찾을 수 있음. 프로그램이 DLL로부터 임포트해 사용하는 함수의 목록은 Imports 탭에 존재함. 윈도우 생성 시 사용되는 CreateWindowExW 함수를 더블클릭해서 함수가 임포트되는 곳으로 갈 수 있음. x키를 눌러서 함..

Dreamhack 2022.07.12

리버싱 07 - rev-basic-1

IDA에서는 비주얼 스튜디오로 프로그램이 컴파일 되었을 때 어떻게 진입점에서 main 함수를 호출하는지 알고 있기 때문에 바로 main 함수를 찾을 수 있음. _arct_iob_func() 함수를 이용해서 stdout 파일 스트림을 가져와 sub_1400012B0 함수를 전달함. vfprintf 함수의 파일 스트림이 stdout이기 때문에 sub_1400013E0 함수가 printf 함수임을 알 수 있음. 단축키 n으로 함수 이름을 printf로 바꿈. 분석한 함수가 어떤 함수인지 알아냈으면 이름을 바꾸는 게 코드 분석하기 간편함. sub_140001440 함수가 scanf 함수임을 알 수 있음. sub_140001300 함수 내부를 보면 _stdio_common_vfscanf 함수가 보이기 때문임. m..

Dreamhack 2022.07.12

리버싱 06 - rev-basic-0

맞는 입력값을 찾아야 함. 입력값을 검증하는 함수를 찾아야 무엇이 제대로 된 입력값인지 알 수 있으므로 String에서 correct 문자열을 찾음. correct 문자열이 참조되는 함수를 살펴보기 위해서 Buffer를 클릭하고 단축키 x를 눌러서 xrefs를 실행함. main 에서 해당 문자열을 참조하는 것을 볼 수 있음. Direction 부분을 더블클릭하면 나오는 부분에서 F5를 눌러서 디컴파일 실행함. 눈에 띄는 함수 sub_140001190과 sub_1400011F0이 보임. IDA는 어셈블리 코드를 C언어로 컴파일해주기 때문에 코드 분석이 쉬워짐. 일단 저 두 함수가 출력, 입력과 관련이 있는 것 같아서 두 함수를 더블클릭해서 들어가보면 디컴파일된 것이 나옴. _acrt_iob_func() 함..

Dreamhack 2022.07.12

리버싱 05 - x86 Assembly

*모든 내용과 이미지의 출처는 x86 Assembly🤖: Essential Part(1) | Dreamhack 로그인 | Dreamhack dreamhack.io 어셈블리 언어 컴퓨터의 기계어와 치환되는 언어. CPU에 사용되는 ISA는 IA-32, x86-64 등 종류가 굉장히 다양함 -> 이 종류만큼 많은 수의 어셈블리어가 존재함. 해당 강의는 x64 아키텍처를 대상으로 하기 때문에 x64 어셈블리어만 공부함. x64 어셈블리 언어 기본 구조 명령어(Operation Code) + 피연산자(Operand) 명령어는 동사 역할, 피연산자는 목적어 역할 mov eax, 3 opecode = 대입해라 operand1 = eax에operand2 = 3을 주요 명령어 21가지 산술 연산(Arithmetic) ..

Dreamhack 2022.07.12

iframe

기본 형식 iframe 태그를 다루지 않는 브라우저에 의해 대신 출력되는 텍스트 src : 출력할 웹 페이지의 URL 주소 srcdoc : 직접 HTML 태그로 작성된 텍스트로서 출력될 내용 name : 프레임 윈도우의 이름. 다른 웹 페이지에서 target 속성 값으로 사용 width : 프레임의 폭, 픽셀 값, 디폴트 300 height : 프레임의 높이, 픽셀 값, 디폴트 150 브라우저 윈도우와 프레임 윈도우는 부모 자식 관계임. parent 윈도우 child 윈도우 top 윈도우 : 최상위 브라우저 윈도우 가장 최상위 윈도우 = top 윈도우 top 윈도우 안에 left frame윈도우와 right frame 윈도우가 child 윈도우로 들어감. upper와 lower 윈도우는 right fra..

리버싱 04 - Windows Memory Layout

*모든 내용, 이미지의 출처는 Background: Windows Memory Layout | Dreamhack 로그인 | Dreamhack dreamhack.io 메모리 레이아웃(Memory Layout) 프로세스 가상 메모리의 구성. *가상 메모리(Virtual Memory) : 프로그램 실행 시 운영체제에서 프로세스에게 사용 가능한 메모리 공간을 할당해주는데, 이 공간을 가상메모리라고 함. 운영체제가 하는 일 - 프로그램의 정보를 참조하여 저장된 데이터가 적절한 영역에 저장되도록 함. - 프로세스가 사용할 가상 메모리를 용도별로 구획. - 프로세스가 사용하는 데이터를 적절한 구획에 저장. -> 유사한 데이터끼리. 구획에 권한 부여. => 개발자가 프로세스의 메모리를 직관적으로 이해 가능함. 섹션: ..

Dreamhack 2022.07.10