본문 바로가기

분류 전체보기137

리버싱 핵심원리 13.5~13.8(PE File Format) 13.5 IAT DLL은 Windows OS의 근간을 이루는 개념으로, Dynamic Linked Library, 즉 동적 연결 라이브러리라고 한다. 16bit DOS 시절에는 코드가 해당 함수의 binary 코드를 그대로 가져와 프로그램에 삽입시켜버리는 구조로 실행되어 DLL없이 Library만 존재했는데, 이는 멀티태스킹이 지원되면서 심각한 메모리 낭비를 불러오게 됐다. 32bit Windows 환경에서는 매우 많은 라이브러리 함수가 필요하게 되면서, 아래와 같은 DLL 개념이 고안됐다. 1. 프로그램에 라이브러리를 포함시키지 말고 별도의 파일(DLL)로 구성하여 필요할 때마다 불러 쓸 것 2. 일단 한번 로딩된 DLL의 코드, 리소스는 Memory Mapping 기술로 여러 Process에서 공유해.. 2020. 11. 2.
[Network] Sans Network Forensic [Puzzle 3] #3 Ann과 Mr.X는 새로운 보금자리를 마련했다. 범인 인도 서류가 통과되기를 기다리는 동안 당신과 수사관들은 비밀리에 Ann의 활동을 감시하고 있다. Ann은 최근에 새 AppleTV를 구입했으며, 192.168.1.10의 IP주소를 사용하고 있다. 당신은 Ann이 검색한 내용과 그녀의 관심사에 대해 정보를 수집해야한다. #3. Appletv를 통해 Ann이 검색한 첫 4개의 검색 내용은 무엇인가? KEY Format : a, b, c, d 와이어샤크(wireshark)를 이용해 열어주면 위와 같은 화면이 나온다. 우리는 여기서 Ann이 입력해서 전송한 검색내용을 찾아봐야 한다. 와이어샤크 상단의 [File->Export Objects->HTTP] 로 들어가준다. [Export Objects]는 프로토콜.. 2020. 10. 25.
리버싱 핵심원리 8장(abex' crackme #2) abex's 2nd crackme 파일은 Visual Basic(이하 VB)으로 제작되었다. VB 파일은 전용엔진을 사용하는데, 사용 예로는 메세지 박스가 있다. 메세지 박스를 출력하고 싶을 때 VB 소스코드에서 MsgBox() 함수를 사용하는데, VB 컴파일러는 실제로 MSVBVM6o.dll!rtc MsgBox() 함수가 호출되도록 만들고, 이 함수 내부에서 Win32 API 인 user32. dll!MessageBoxW() 함수를 호출해주는 방식으로 동작한다. 우선 문제에서 주어진 프로그램을 실행하면 위와 같은 화면이 나온다. Name과 Serial에 아무 값이나 넣고 Check를 클릭했더니 'Nope, this serial is wrong!' 이라는 메세지 박스가 나온다. 전형적인 시리얼 값을 찾는.. 2020. 10. 6.
리버싱 핵심원리 13장(PE File Format) 1. PE File Format PE(Portable Executable) 파일 또는 PE32 : Windows 운영체제에서 사용되는 32bit형태의 실행 파일 형식 (64비트형태의 PE파일은 PE+ 또는 PE32+ 라고 불림) PE 파일 종류에는 아래 표에 명시되어 있다. obj 파일을 제외한 모든 파일은 실행가능하다. 종류 주요 확장자 종류 주요 확장자 실행계열 exe, scr 드라이버 계열 sys, vxd 라이브러리 계열 dll, ocx, cpl, drv 오브젝트 파일 계열 obj 2. 기본 구조 DOS header부터 Section header까지는 PE헤더, 그 밑의 Section들은 PE 바디라고 한다. 파일에서는 Offest으로, 메모리에서는 절대주소(Virtual Address)로 위치를 .. 2020. 10. 5.
Challenge(old) - Challenge 34번 문제풀이 webhacking.kr/challenge/js-7/ Challenge 34 webhacking.kr 이번 문제에 들어가는 순간 "debug me" 라는 메세지가 뜬다. Ctrl+u를 통해 페이지 소스를 확인해봤다. 페이지 소스 길이가 장난이 아니고, 정리도 안되어 있다. https://beautifier.io/ Online JavaScript beautifier beautifier.io 위 사이트는 코드를 정리해주는 사이트이다. 여기에 들어가서 자바스크립트 부분을 복사+붙여넣기해서 확인해보자! Beautify Code를 하면 사진과 같이 코드가 예쁘게 정리된다. 처음 "debug me" 메세지가 뜬 이유는 아마 코드에서 alert 함수를 사용했기 때문이라고 생각해, Ctrl+f 를 통해 'alert'를.. 2020. 10. 4.
리버싱 핵심원리 6장(abex’ crackme #1 분석 ) 이 프로그램을 실행시켜보면 'Make me think your HD is a CD-Rom' 이라는 문구가 나온다. 확인을 누르면 'Nah... This is not a CD-ROM Drive!' 라는 Error 메세지가 뜨게 된다. 올리디버거로 이 파일을 열어보았다. EP에 메인함수가 바로 나타난다는 점을 보면 이 프로그램은 어셈블리 언어로 작성되었다는 것을 유추할 수 있다. 어셈블리 언어로 만들어진 실행파일이기 때문에 개발툴을 사용해 만들어진 프로그램보다 EP 코드가 짧다. 이는 개발툴을 사용하면 컴파일러가 Stub Code를 추가시키기 때문에 디스어셈시, 내용이 더 길어지기 때문이다. 코드에서 전체적인 내용을 보면, GetDriveTypeA를 이용해 C 드라이브의 타입을 얻어오는데, 이를 CD-Rom.. 2020. 10. 2.