Security51 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. relocation과 .reloc섹션 틀린 부분이 있다면 언제든지 댓글 남겨주세요! ASLR(Address Space Layout Randomization): 보안 강화를 위해 exe파일이 메모리에 로드될 때 로드 시작 주소 값을 매번 랜덤하게 바꾸는 것(windows vista이후 도입) PE재배치(Relocation): PE파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될 때 수행되는 일련의 작업 이 재배치 과정에서 Base Relocation Table이 사용됨 재배치 과정 :하드코딩 된 위치 찾기(Base Relocation Table 이용) > 값에서 ImageBase만큼 빼기(VA→RVA) > 실제 로딩 주소 더하기(RVA→VA) type offset = type + offset 하드코딩 주소 = Virtual Add.. 2021. 8. 28. [CodeEngn] Challenges Basic RCE L13, L14, L15, L16 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L13 L13. 정답은 무엇인가 다짜고짜 정답이 무엇이냐고 한다.. 우선 파일정보를 확인하고 파일을 실행시켜보았다. 123을 입력했더니 틀렸다고 다시 입력하라고 한다. 이곳에 입력할 패스워드를 찾는 것 같다. 파일의 정보를 확인해보니 C#으로 작성된 .net파일이다. .net파일은 ollydbg에서 디버깅하기 어렵기 때문에 다른 프로그램을 사용한다. dotPeek 프로그램에서 파일을 열어보았다. 세개의 cs파일이 보이는데 그 중 RijndealSimpleTest.cs파일에서 패스워드를 찾을 수 있을 것 같다. * Rijndeal..익숙하다 싶었는데 대칭 암호 알고리즘이다. 이 알고리즘을 기반으로 AES암호.. 2021. 8. 22. [CodeEngn] Challenges Basic RCE L10, L11, L12 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L10 L10. OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 프로그램을 실행시키면 다음과 같이 이름과 시리얼 번호를 입력하는 메시지 박스가 나온다. 프로그램의 정보를 확인해 본 결과 Aspack으로 패킹되어 있음을 알 수 있다. Aspack도 이전의 문제에서 했던 패킹 방법과 같은 방식으로 언패킹하면 된다. JNE이후 PUSH를 하는 경우 JUM와 동일하게 해당 주소로 이동하는 동작을 한다. 따라서 445834=OEP로 이동한다. string문자열 중 "registered...well done!" 문자열이 등록 성공 문자열로 추측된다. 문자열 위쪽 코드를 보면 44552B로 .. 2021. 8. 15. [CodeEngn] Challenges Basic RCE L07, L08, L09 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L07 L07. 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 string검색해서 시리얼 번호를 비교하는 것으로 추측되는 부분으로 이동한다. 비교 코드의 시작부분으로 추측되는 코드에 BP를 걸고 실행시켜본다. 메시지 박스에 시리얼 문자열을 입력하고 check버튼을 누르면 BP를 건 부분으로 이동한다. GetDlgItemText함수에서 사용자가 입력한 문자열을 가져온다. 'Ente'를 입력했다. VolumeName매개변수가 가리키는 주소(40225C)로 지정된 볼륨의 이름을 받아온다. 현재 분석 환경의 C드라이브 이름이 없기 때문에 빈 문자.. 2021. 8. 9. [CodeEngn] Challenges Basic RCE L04, L05, L06 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L04 L04. 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 파일을 실행시키면 다음과 같이 그냥 실행시켰을 땐 '정상', 디버거를 통해 실행시켰을 경우 '디버깅 당함'이 나온다. 현재 프로그램이 디버깅을 당하고 있는지 체크하는 프로그램이다. ollydbg에서 파일을 열어 진행해보았다. 계속 진행하다보면 40100F 함수에서 cmd창에 탐지 여부 결과가 출력되며 코드 진행이 끝난다. 이 함수 안에서 루프문을 돌고 있는 것으로 보인다. 함수로 들어가보면 아래의 코드를 반복하면서 정상/디버깅 당함 여부를 체크하는 것으로 추측된다. KERNEL32.IsDe.. 2021. 8. 6. [CodeEngn] Challenges Basic RCE L01, L02, L03 틀린 부분이 있다면 언제든지 댓글 남겨주세요! CodeEngn_Challenges Basic RCE L01 L01. HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 이 파일이 몇 비트의 파일인지 찾는 방법은 많지만 그 중 파일 포멧 구조를 통해 찾아보았다. NT HEADER 내의 IMAGE_FILE_HEADER의 구조체 중 machine의 값은 CPU 별로 고유한 값을 의미한다. 32 bit Intel 호환 칩은 0x014C의 값을 가지며 64 bit Intel 칩은 0x0200의 값을 가진다. 32비트 파일이라는 것을 알았으니 ollydbg를 통해 파일을 열어보았다. 401000이 EntryPoint이고, 차례로 실행시켜보면 MessageBox AP.. 2021. 8. 5. GDB 실습 1 보호되어 있는 글 입니다. 2021. 5. 16. 이전 1 2 3 4 5 6 다음 728x90 반응형