본문 바로가기

리버싱36

[CodeEngn] Basic RCE L04 보호되어 있는 글 입니다. 2024. 5. 31.
[CodeEngn] Basic RCE L03 보호되어 있는 글 입니다. 2024. 5. 25.
[CodeEngn] Basic RCE L02 보호되어 있는 글 입니다. 2024. 5. 25.
[CodeEngn] Basic RCE L01 보호되어 있는 글 입니다. 2024. 5. 19.
[Dreamhack] rev-basic-9 https://dreamhack.io/wargame/challenges/23 rev-basic-9Reversing Basic Challenge #9 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io Input 문자열이 있는 main 함수로 이동한 후에 사용자의 입력 값을 비교하는 chall9.7FF76D511000 으로 이동했다.  코드 분석 결과 I_am_KEY를 키로 해서 스택에 있는 문자열과사용자가 입력한 문자열을 비교하는 것 같다.이 문제도 역연산으로 풀 수 있을 것 같다. table = [0x63, 0x7C, 0x77, 0x7B, 0xF2, .. 2024. 5. 12.
[Dreamhack] rev-basic-8 https://dreamhack.io/wargame/challenges/22/ rev-basic-8Reversing Basic Challenge #8 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  Input 문자열이 있는 곳으로 이동한 후에 사용자의 입력 값을 비교하는  chall8.7FF6F0B11000 으로 이동했다.  따라서 이 함수는[7FF6F0B11000] 주소에 저장된 21개의 값과사용자 입력 값의 연산을 한 값을 비교하는 함수이다.  [7FF6F0B11000] 주소에 저장된 값들은 이와 같다.이 함수는 역연산이 힘드므로키보드로 입력할.. 2024. 5. 11.
[Dreamhack] rev-basic-6 https://dreamhack.io/wargame/challenges/20 rev-basic-6Reversing Basic Challenge #6 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  cmd 창에서 파일을 실행해보면 input 값을 입력하라고 하고,잘못된 값을 입력하면 Wrong이라는 메시지가 출력된다.  Input 문자열이 있는 곳으로 이동한 후에 사용자의 입력 값을 비교하는 chall6.7FF7543F1210으로 이동했다.  movsxd rax, dword ptr ss:[rsp] cmp rax, 12rax에 인덱스 길이가 18이 될.. 2024. 4. 28.
[Dreamhack] rev-basic-5 https://dreamhack.io/wargame/challenges/19 rev-basic-5Reversing Basic Challenge #5 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io  cmd 창에서 파일을 실행해보면 input 값을 입력하라고 하고,잘못된 값을 입력하면 Wrong이라는 메시지가 출력된다.  문자열 찾기 기능을 이용해서 Input 문자열이 있는 주소로 이동했다.  이동한 곳을 확인해봤다.사용자의 입력 값을 chall5.7FF79EAF1000 함수에서 비교한 뒤에비교 결과에 따라  Correct나 wrong을 출력한다. 해.. 2024. 4. 28.
[Dreamhack] Reversing Basic Challenge #4 https://dreamhack.io/wargame/challenges/18/ rev-basic-4Reversing Basic Challenge #4 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 바이너리를 분석해서 correct를 출력하는 입력값을 알아내는 문제이다.  문제 파일을 실행해보면 rev-basic-3처럼 Input 입력을 받고틀린 값을 입력하면 Wrong을 출력한다. Correct를 출력해내기 위해서 문제 파일을 x64dbg로 열어봤다.  [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조]문자열 참조를 통해 Correct.. 2024. 4. 10.
[윈도우즈 보안과 악성코드 기초] 기초 정적 분석 - Practical Malware Analysis Lab01-03.exe 1. Virustotal에 업로드 하고 보고서를 확인하자. 기존 안티바이러스 정의된 것과 일치하는가? 72개의 엔진 중에서 66개가 악성코드로 탐지됐으므로 악성코드 시그니처로 판별된다. 2. 패킹이나 난독화의 흔적이 있는가? 이유는? PEiD로 파일을 확인했을 때, EP Section의 정보가 나오지 않는다. 컴파일 이름을 통해 FSG 1.0으로 패킹됐다고 추측할 수 있다. 이는 올리디버거나 x32dbg로 디버깅하거나 VMUnpacker 등의 tool을 사용해서 언패킹이 가능하다. VMUnpacker에 파일을 입력하고, Unpack 버튼을 클릭하면 언패킹이 가능하다. 해당 툴은 WinXP 가상머신 등에서 사용 가능하다. 3. 임포트를 보고 악성코드의 기능을 알아 낼 수 있는가? 그렇다면 어떤 임포트를 보.. 2024. 4. 10.
[윈도우즈 보안과 악성코드 기초] 기초 정적 분석 - Practical Malware Analysis Lab01-02.exe 1. Virustotal에 업로드 하고 보고서를 확인하자. 기존 안티바이러스 정의된 것과 일치하는가? 72개의 엔진 중에서 58가 악성코드로 탐지됐으므로 악성코드 시그니처로 판별된다. 2. 패킹이나 난독화의 흔적이 있는가? 이유는? PEiD로 파일을 확인해보면 컴파일러에 관련된 정보가 Nothing found로 뜨고, EP Section이 일반 파일과 같이 .text가 아닌 upx1으로 되어 있는 것을 확인 할 수 있다. 따라서 upx로 패킹되었다는 것을 알 수 있다. 파일을 언패킹한 후, 다시 PEiD로 확인해보면 EP Section이 .text로 변경되고, 컴파일 관련 정보가 Microsoft Visual C++로 변경된 것을 확인할 수 있다. 3. 임포트를 보고 악성코드의 기능을 알아 낼 수 있는가.. 2024. 4. 10.
[윈도우즈 보안과 악성코드 기초] 기초 정적 분석 - Practical Malware Analysis Lab01-01.exe & Lab01-01.dll 1. Virustotal에 업로드 하고 보고서를 확인하자. 기존 안티바이러스 정의된 것과 일치하는가? Lab01-01.exe는 72개의 엔진 중에서 52개가 악성코드로 탐지됐고, Lab01-01.dll은 71개의 엔진 중에서 38개가 악성코드로 탐지됐다. 따라서 두 파일 모두 악성코드 시그니처로 판별된다. 2. 이 파일의 컴파일 시점은? 컴파일 시점은 PE 파일 헤더의 Time Stamp 정보를 통해서 알 수 있다. PEView의 IMAGE_NT_HEADER/IMAGE_FILE_HEADER의 Time Data Stamp를 보면 동일한 날짜에 19초 차이로 컴파일 된 것을 알 수 있다. 따라서 이 두 개의 파일은 같은 패키지로 판단된다. exe가 실행되고 dll을 동적으로 호출하는 구조로 판단된다. 3. .. 2024. 4. 10.
[Dreamhack] Reversing Basic Challenge #3 https://dreamhack.io/wargame/challenges/17 rev-basic-3Reversing Basic Challenge #3 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출dreamhack.io 바이너리를 분석하여 correct를 출력하도록 리버싱 해야 되는 문제이다.  문제 파일을 실행해보면 입력 창이 뜬다.아무 값이나 입력을 해보면 Wrong이라고 한다.Correct를 출력해내기 위해서 문제 파일을 x64dbg로 열어봤다.   [마우스 우클릭 > 다음을 찾기 > 모든 모듈 > 문자열 참조] 문자열 참조를 통해 Correct 문자열을 찾았다.  .. 2024. 4. 6.
[윈도우즈 보안과 악성코드 기초] PE 파일 헤더와 섹션 PE(Portable Excutable) 파일 PE 파일이란? Win32 기본 파일 형식 exe, scr, sys, dll, ocx 등 Process : EXE +DLL 실행 과정 PE 파일 실행 dll은 더블 클릭해도 실행되지 않음! dll은 exe가 call 해야 실행이 됨 PE 헤더 정보를 메모리에 매핑 실제 프로세스를 위한 메모리 할당 섹션 정보를 메모리에 복사 Import 정보 처리 기준 재배치 처리 실제 프로그램 코드로 분기 https://learn.microsoft.com/ko-kr/windows/win32/debug/pe-format PE 파일 포맷 윈도우 실행 파일 포맷: DLL, PE(Portable Executable) PE file header PE file header에서 대부분의.. 2024. 4. 6.
[윈도우즈 보안과 악성코드 기초] 기초 정적 분석 기초 정적 분석 목표 악성코드의 기능을 파악하기 위해 코드나 프로그램의 구조를 분석하는 과정 악성코드를실행하지 않고 분석하는 과정인 정적분석의 기본을 수행할 수 있다. 주요 사용 기법 (기초 정적 분석 방법) 악성 여부를 판단하는 안티바이러스 도구 악성코드를 판별하는 해시 정보 검증 파일의 문자열, 함수, 헤더에서 주요 정보 수집 안티바이러스 스캐닝 악성코드 탐지(기본) 패턴 매칭 분석: file signatures를 검색하여 찾는 방법 주로 많이 사용하는 방법 heuristic : 변조, 신종 등 악성코드를 변조시키거나, 신종을 나오게 하는 방법 악성코드 실행 및 탐지 (안티바이러스 도구) http://www.virustotal.com 패턴 매칭 분석 구글이 인수하여 운영 중인 사이트 VirusTota.. 2024. 4. 6.