Security/Reversing27 명령어 집합구조 (ISA) 틀린 부분이 있다면 언제든지 댓글 남겨주세요! ISA : CPU가 사용하는 명령어 집합 CPU는 프로그램 동작을 위한 연산을 처리하고, 저장 장치는 동작에 사용되는 데이터를 저장한다. GPU는 그래픽 데이터, 랜카드는 네트워크 통신, 사운드 카드는 소리 데이터를 처리한다. 이러한 부품들이 모여 컴퓨터를 이루는데 그 중에서 CPU가 사용하는 명령어와 관련된 집합을 명령어 집합 구조 (Instruction Set Architecture, ISA)라고 한다. ISA의 종류로는 IA-32, x86-64(x64), MIPS, AVR 등이 존재한다. - IA-32 인텔의 32비트 CPU 아키텍처. 이 환경에서 CPU가 제공할 수 있는 가상메모리의 최대 크기는 4GB. 이때 32비트 아키텍처의 의미는 CPU가 한번에.. 2022. 7. 20. [Malwarebytes] crackme 1 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Malwarebytes-crackme 1 이 파일은 Malwarebytes사에서 제공하는 훈련용 악성코드이다. 9가지의 디버거 탐지 코드를 거쳐 process hollowing을 통해 rundll32.exe프로세스에 인젝션 코드를 주입한 후 실행시키면 성공 문자열을 확인할 수 있다. 정적 분석 (Exeinfo, Bintext) 우선 정적 분석을 통해 파일의 형식과 사용되는 API, 문자열 등을 확인해보았다. 상세 분석(x64dbg, process explorer) x64dbg으로 동적 분석을 통해 상세 분석을 진행한다. 파일을 실행시켰을 때 나왔던 문자열을 이용해 핵심 코드를 찾아간다. 'I am so sorry, you failed! :( ' 문자열을 이용.. 2021. 12. 9. 데이터 보호 기법-Canary 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Canary 란? 함수 호출 시에 스택에 카나리아 값을 설정하고, 함수가 종료하기 직전 값의 변조 유무를 검사 (이를 이용하여 스택 오버플로우가 발생 했는지 여부를 확인할 수 있음) 이 값은 컴파일 단계에서 추가되며, 옵션으로 SSP(stack smashing protector)사용/ SSP끄기 설정 Windows에서는 GS or Stack Cookie / Linux에서는 Stack Canary라고 불림 Canary 종류 - Terminator canary : \xff(EOF), \x00(null), 0x0a(LF) 와 같이 문자열의 끝을 나타내는 문자 이용 - Random canary : 랜덤하게 값 생성, 프로그램 초기 설정시 전역 변수에 값 저장 - R.. 2021. 11. 11. UAF 공격 틀린 부분이 있다면 언제든지 댓글 남겨주세요! UAF (Use After Free) 취약점 힙(Heap)은 동적으로 메모리 할당(malloc)/해제(free)가 되는 부분. 힙 영역 중 사용 중이 아닌 공간(unused heap)은 이중 연결 리스트로 관리. 중간에 메모리 해제가 발생하면 해당 영역이 연결 리스트에 추가되며, 새로 메모리 할당 요청이 오면 연결리스트의 첫번째 매칭(first fit)영역을 할당. 할당했던 메모리 해제 후 재할당해서 사용할 때 같은 크기로 재할당 할 경우 이전에 사용(use)했던 메모리 공간을 재사용하게 되는데, 이때 이전에 할당했을 때처럼 사용하는 경우 발생할 수 있는 문제가 UAF(use after free)공격. (최근 운영체제에서는 재할당 X) 해제된 공간 재할당 확.. 2021. 11. 6. [CodeEngn] Challenges Basic RCE L20 CodeEngn_Challenges Basic RCE L20 L20. 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다) 파일 실행 결과 key파일이 없어서 그런지 아무것도 뜨지 않는다. 더보기 key파일 없이 풀어보려도 시도했던 흔적.. createFileA API return결과 key파일이 없어 eax=FFFFFFFF이므로 401032에서 비교 후 분기되지 않는다. 이 부분을 수정하여 key파일이 없어도 파일이 존재할 때 실행되.. 2021. 10. 18. 디버깅 탐지 방법 틀린 부분이 있다면 언제든지 댓글 남겨주세요! TEB / PEB를 통해 디버깅 탐지 1. PEB의 BeingDebugged Flag 확인 (IsDebuggerPresent API로 플래그 값 확인 가능 or PEB+0x02값 확인) 디버거가 동작중인 경우 1의 값을 가짐 - 우회: 플래그 값 변경, IsDebuggerPresent API 후킹 및 리턴값 0으로 변경 2. Heap메모리 영역의 특성 이용 (Heap메모리 영역에 접근해 디버깅시의 heap 특성 이용) Heap메모리 영역는 사용되지 않는 부분을 0xFEEEFEEE 또는 0xABABABAB 값으로 채우는 특징을 가짐 따라서 heap메모리 영역을 도는 if을 생성하여 0xFEEEFEEE 또는 0xABABABAB값을 가지면 디버깅 중임을 알 수 있.. 2021. 10. 15. [CodeEngn] Challenges Basic RCE L17, L18, L19 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L17 L17. 키값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) Name이 한자리라고 해서 1을 입력하고 Key에 '123'을 입력했더니 다음과 같이 더 많은 문자를 입력하라는 문자열이 나온다. 파일의 정보를 확인해보니 델파이로 작성된 파일이다. x32dbg을 사용해보도록 하겠다. 메시지 박스가 뜨는 부분과 'Please Enter More Chars..'문자열을 이용하여 핵심 코드를 찾아가 보았다. 45BB24부분에서 eax값과 뒤의 숫자를 비교해 같거나.. 2021. 10. 14. KeyLogger 분석 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeCure 동아리_KeyLogger 프로그램 작성 및 분석 1. 개요 File Name KeyLogger.exe File Size 51,712 byte File Type Win32 EXE 분석 도구 x32dbg / Visual Studio 2019 2. 프로그램 빌드 및 동작 Visual Studio을 이용하여 코드 작성 후 Key Logger 프로그램 keyLogger.exe을 빌드한다. GetAsyncKeyState API를 이용하여 현재 키의 상태를 알아온다. 이전에 키를 누른 적이 없고 현재 시점에서 눌리지 않은 경우 0을 반환하고 눌린 경우 0x8000을 반환하며, 이전에 키를 누른 적이 있고 현재 눌리지 않은 경우 1을 반환하고 현재 눌린 경.. 2021. 9. 27. Debugger software BP의 원리 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Debugger software BP의 원리 - Debugger: 디버깅 하는 프로그램 - Debugging: 프로그램 개발의 마지막 단계에서 프로그램의 오류를 발견하고 원인을 찾는 과정 Debugger의 Break Point에는 3가지가 있다. Software BP, Hardware BP, Memory BP Software Break Point는 CPU 실행을 중단하며, 제한없이 사용할 수 있다. 다만 코드를 변경하게 되므로 코드를 변경하면 안되는 경우 Hardware Break Point를 사용해야 한다. (최대 4개) Debugger가 Debugging중 반드시 처리해야 하는 예외 중에 exception_breakpoint가 있다. Software Br.. 2021. 9. 8. 이전 1 2 3 다음 728x90 반응형