본문 바로가기

분류 전체보기122

[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.
취뽀 보호되어 있는 글 입니다. 2021. 11. 29.
[CodingStudy] Heap -더 맵게 틀린 부분이 있다면 언제든지 댓글 남겨주세요! 프로그래머스_Heap -더 맵게 문제 자체는 어렵지 않았는데 효율성에서 막혔던 문제이다. sort를 매번 반복때마다 사용하게 되면 시간복잡도가 O( N * N logN ) 가 된다. 효율성을 통과하기 위해서는 heapq 모듈을 쓰는 방법이 있었다. (다른 방법이 있다면 알려주세용..) heapq 알고리즘 heap= 최소/최대 규칙을 따르는 이진 트리 최소 힙=부모 노드 값이 자식 노드보다 항상 작거나 같음 최대 힙=부모 노드 값이 자식 노드보다 항상 크거나 같음 파이썬에서 힙큐알고리즘(우선순위 큐 알고리즘) 내장 모듈을 제공한다. 즉 따로 정렬을 하지 않아도 가장 낮은 값이 가장 낮은 인덱스에 위치한다. heapq.heapify(list) list를 힙으로 .. 2021. 11. 22.
데이터 보호 기법-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.
[CodingStudy] BFS-게임맵 최단거리 틀린 부분이 있다면 언제든지 댓글 남겨주세요! 프로그래머스-BFS_게임맵 최단거리 https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 생각해야 할 부분 1. BFS(Breadth First Search) 알고리즘 개념 이용 > 한번 방문한 위치 재방문하지 않도록 이미 지나온 길은 0으로 visit 체크 2. collection 모듈에서 제공하는 deque는 s.. 2021. 11. 9.
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.
728x90
반응형