모각코 7일차회고입니다.



 

위와같이 PE헤더에 대해 복습하면서 구조별로 헥스값을 잘라가며 수정가능한부분을 수정해봤는데, Notepad를 hxd로 열어서 몇가지 지우거나 수정을 해봤는데... Dos Stub을 지우면 파일이 실행은되지않으나 깨지진않았지만, 그 이후로 이것저것을 건들였을땐 파일이 깨져버려 실행조차되지않았습니다. 공부한내용 이외에도 PE헤더에대해 알아야할게 좀 더 많은가봅니다. 이 부분은 조금 더 공부해서 나중에 다시해보기로 했고,


뒷부분의 DLL 인젝션과 DLL 이젝션에 대해 공부를했습니다.

이는 해킹에 관련된부분인것 같기도 하고, 그래서 조금 흥미를 느꼈고, 모든 코드를 돌려보지는 못했지만 간단한 예제파일들을 책을보며 따라해봤습니다.


실습을 진행할때는 정말 시간이 빨리가는거같습니다. 어느덧 마지막으로 참여하게될 모임이 끝나게 되었네요.

정말 좋은 프로그램에 참여하게 되어 조금은 성장했을거라 믿습니다!


요약

1. PE헤더 구조 하나하나 분석, 수정해보기

(Dos Stub 제거, 각종 구조체 내의 포인터 조작)

2. DLL 인젝션 실습 및 DLL 이젝션 공부

블로그 이미지

Kylin_1Q84

,

6일차 회고


어.. 오늘은 정리를 안하고 실습하는데에 시간을 좀 많이썼습니다.

어제에 이어서 PE구조에 대해서 마저 실습을하면서 봤고,

그 다음에는 실행압축에대해서 공부했습니다.

이게 정말 어마어마한게 이 부분을 잘 이해하면 백신에 걸리지않는 악성파일을 만들어 낼수있을거라 생각합니다..


일단은 좋은 툴인 PE Viewer라는거를 알게되었고,

개인적으로 콘솔버전으로 PE Viewer를 만들어봐야겠다는 생각도 들었습니다.


UPX로 압축시킨 메모장을 까보는거를 실습해봤는데 재미도 있었지만 많이어려웠고,


UPack 패커도있는데 이는 중국의 dwing이라는 사람이만든 패커인데

이부분을 공부하면서 PE헤더를 정말 잘이해했구나 라는생각이들었습니다.

이는 어렵게만들어져 악성코드에 많이이용되어서 백신은 이 방식이면 악성코드로 인식하게끔 된다고 합니다. 이는 좀 더 PE헤더에 대해서 좀더 이해를 하고 직접 패커를 하나만들어본뒤 공부해볼계획입니다.


요약

1. PE헤더 구조 복습

2. UPX 실행압축방식 공부 및 실습

3. UPack 패커 공부

블로그 이미지

Kylin_1Q84

,

6번째 시간입니다..

어제에 이어 리버싱핵심원리책을 공부할겁니다.

어제 PE파일포맷의 일부분을 정리했는데, 마저 진행해야할거같습니다.

블로그 이미지

Kylin_1Q84

,

PE File Format


PE(Portable Executable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식

32bit : PE32

64bit : PE+ or PE32+



종류

   실행 계열 : EXE, SCR                                           드라이버 계열 : SYS, VXD

   라이브러리 계열 : DLL, OCX, CPL, DRV                    오브젝트 파일 계열 :  OBJ


기본 구조

1.DOS header

2.Section header

3.PE Body


DOS_HEADER(크기 0x40)

중요한것 e_magic, e_lfanew

e_magic은 PE파일 모두 MZ

e_lfanew는 NT Header 구조체의 오프셋이 존재 (도스 헤더의 마지막 8byte)


DOS HEADER의 밑에는 DOS Stub이 존재하는데,

이는 파일 실행의 문제를 주지 않음(있을수도 있고, 없을수도 있음)

(보통은 dos에서 실행시 this program cannot be run in DOS mode" 를 출력)


NT Header(크기 0xF8)

위는 3개의 멤버를 가지는데 첫번째 멤버는 Signature로 PE라는 값을 가짐

그리고 FileHeader와 OptionalHeader를 가짐


FileHeader에선 4가지가 중요

1.Machine CPU별로 고유한값이므로 이는 만들어진 환경을 추측가능함

2.NumboerOfSections 섹션의 수(코드,데이터,리소스 등이 나뉘는데 그 숫자)

3.SizeOfOptionalHeader OPTIONAL헤더의 크기 (이미정해져있는 크기)

4.Characteristics    파일의 속성값(실행가능 여부등을 or로 표시)


Optional Header(크기 0xE0)

매직넘버 32bit 10B, 64bit, 20B

AddressOfEntryPoint : RVA값을 가지고있는데 최초로 실행되는 코드의 시작주소

ImageBase : PE파일이 로딩되는 주소

메모리 로딩후 EIP = ImageBase + AddressOfEntryPoint

섹션의 최소단위(파일과 메모리로 나뉘어져있으나 같을수도있고 다를수도있다)

가상메모리에서 PE Image의 크기

PE헤더의 전체크기(파일섹션크기의 배수)

subsystem값

DataDirectory배열의 크기

DataDirectory 배열(매우 중요)


위와 같은 내용을 오늘 공부했고,  직접 확인해보며 책이랑은 다른부분도 있었고,

중요한내용들이 꽤 많아 이는 분석할때 메모를 바로옆에 켜두고 해야될거같습니다.


요약

1.PE File Format 복습(실습 및 정리)

블로그 이미지

Kylin_1Q84

,

5번째 시간입니다!

알바와 병행하고있어서 매우 피곤한 하루네요.


오늘은 다음주 토요일 26일에 열리는 정보보안대회 예선인

코드게이트준비를 하기위해서 

리버싱핵심원리책에서 PE헤더부분을 복습하고.

안티디버깅부분을 조금 공부하려고해요!

열심히하겠습니당.

블로그 이미지

Kylin_1Q84

,

네번째 모임을 마쳤습니다!


깃허브수정은 이제 구글링 없이 스스로 이것저것 건들여보고 있어서

발전이 조금 더딘것 같습니다.

일단은 메인의 사진을 변경했고,

기본 디자인을 수정해보려했으나 실패했습니다.


리버싱핵심원리책은

11장 의 복습

13장의 PE파일포맷에 대해 공부하였는데 이부분이 좀 어마어마하게 많아서

따로 정리해야할거같습니다.


요약

1.github블로그 꾸미기(진행중)

2.리버싱핵심원리 11장복습

3.PE파일포맷의 공부


블로그 이미지

Kylin_1Q84

,

저는 모각코가 총 6회차인줄 알았는데 8회차까지 있었네요!

오늘은 4번째 시간입니다.


깃헙도 이제 슬슬 거의다익혀가고있고, 리버싱핵심원리도 기초는 끝나가는거 같아요!

오늘은 깃허브 포스팅 이쁘게하는법이랑, 블로그를 원하는대로 꾸미고

리버싱핵심원리 책을 읽을겁니다!

블로그 이미지

Kylin_1Q84

,

세번째 모임을 마쳤습니다.


오늘은 저번주에 만들던 제 깃허브 블로그

https://kylin-1q84.github.io/ 에다가 글을 쓰는법을 익혔습니다!

(이미지 첨부법 등)

그리고 md파일에 관리가 편한 Atom 에디터를 다운받아서 사용법을 익혔으며,

git에 점점 익숙해져가고 있습니다.


리버싱 핵심원리는 저번에 읽던

8장 abex' crackme #2 를 다시읽고 Visual Basic파일의 특징을 익혔고

9장에서 Process Explorer프로그램이 뭔지알았고(작업관리자와 비슷)

10장에서 함수 호출규약방식인 cdecl과 stdcall, fastcall을 구분하는 법

11장 Lena's Reversing for Newbies 파일 실습을 진행했습니다.

11장 실습은 내일 다시 해보고 복습해봐야 할것같습니다.


12장도 읽었는데 한자로 된 세계제일 대한민국이라는 단어를 모든 한자는 알지 않더라도, 앞 뒤를 보고 글자를 유추할수있게 되어 읽을수 있게되지만, 한자로 글자를 완전하게 쓸 줄아는사람은 몇 없다면서, 완벽하지 않아도 된다고 말하고 있고, 노력하면 된다는걸 보이고있어 좋은 문장인거 같습니다.


요약

1.gitHub 포스팅하는법 익힘

2.abex' crackme  크랙킹 복습

3.함수 호출규약방식 공부

4.Lena's Reversing for Newbies 파일 크랙킹 실습





블로그 이미지

Kylin_1Q84

,

모각코 3일차 입니다 :)

벌써 한주정도가 지났고 절반까지 왔네요,


오늘은 지난번에 만든 깃허브 블로그인

https://kylin-1q84.github.io/

에서 깃허브 포스팅방법과 꾸미기에 1시간정도 시간을 투자할거고,


리버싱 핵심원리 책을 이어서 읽을겁니다.

아마 3장정도 읽고 실습을 진행할꺼 같아요.


오늘도 화이팅!

블로그 이미지

Kylin_1Q84

,

오늘은 2번째 모임을 진행했습니다.


어제 만들었던 Github.io는 제가 생각했던 방향이 아니였기에

이를 수정하는 것을 목표로 했습니다.


예상 투자시간을 1시간 정도로 잡고 진행하였습니다.

그 과정에서 git사용법의 미숙으로 시간을 조금 오래잡아먹었고,

1시간 30분정도를 사용하게 되었습니다.


http://kylin-1q84.tistory.com/category/GitHub/github%20%ED%83%90%EB%B0%A9%EA%B8%B0


https://kylin-1q84.github.io/


위는 블로그를 만들면서 쓴 글이고, 아래는 오늘 진행하여 나온 결과물입니다.

어제는 404 NOT FOUND가 떳었기에 조금 상당한 진보였다 생각합니다.


그 후 남은 1시간 30분은 리버싱핵심원리 책을 읽었습니다.


오늘은 5장, 6장, 7장, 8장을 읽었으며


5장 : 스택의 역할 및 동작

6장 : abex's Crackme 1 분석 및 실습

7장 : 스택프레임의 설명

8장 : abex's Crackme 2 실습


과 같은 내용이 였으며 실습 같은경우는 책을 읽기전에 먼저 해보았고,

앞에서 읽었던 main함수 찾기를 위주로 실습을 진행했고

ollydbg 단축키들을 숙달하는 단계였습니다.


요약

1. github.io 생성 2번째

2. git 사용법 숙달

3. 스택의 이해

4. ollydbg 사용법 연습

5. 파일 패치 실습




블로그 이미지

Kylin_1Q84

,