리버싱

"리버싱 공부 방법" 2021 번역 & 요약

상세 2021. 8. 22. 19:36

외국의 어떤 분께서 최신 버전으로 잘 설명해 주신 글이 인상 깊어서 간단히 내용을 요약해 보았다.

모든 내용을 번역한 것이 아니므로 빠진 내용이 있더라도 양해 바란다.

대부분 나의 뇌피셜 번역이라 오류가 많을 수 있다.

원본 글 : https://habr.com/en/post/548344/

 

How to Start Reverse Engineering in 2021

Reverse engineering might seem so complex, that not everyone has the bravery required to tackle it. But is it really that hard? Today we are gonna dive into the process of learning how to reverse...

habr.com

서문 

먼저 리버싱을 통해서 무엇을 하고 싶은지, 목표가 무엇인지 정하라. 만약 정했다면, 목표에 집중하라. 이를 통해 중요한 정보와 기술에 집중할 수 있을 것이다. 만약 아직 정확히 목표를 정하지 못했더라도 리버싱을 시작해도 된다. 먼저 리버싱을 맛본 후에 차차 정해도 문제는 없다.

 

자 이제 공부 방법에 대해 알아보자. 나는 리버싱을 공부하기 위한 단계를 3단계로 나누었다. 항상 그랬듯이, 관련 자료들은 설명란에 기재되어있다.

 

1. 티어 1

이제 막 리버싱을 공부하려고 결심한 단계이다. 그래서 이 단계에서는 무엇을 배울 수 있을까?

 

* 어셈블리 언어

어떤 어셈블리어를 배우든 상관없지만 x86으로 시작하는 것을 추천한다. 왜냐하면 다양한 관련 자료가 있고, 그것을 지원하는 다양한 도구들이 있기 때문이다. x86 어셈블리어를 공부하기 위해 내가 가장 추천하는 자료는 이것이다.  https://github.com/0xZ0F/Z0FCourse_ReverseEngineering and https://beginners.re

 

"Reverse Engineering for Beginners" free book

 

beginners.re

 

* 실행 파일 포맷

파일 포맷에 대한 약간의 지식도 도움이 된다. 각각의 운영체제마다 다른 종류의  파일 포맷을 사용하는데, 윈도우는 PE를 사용하고, 리눅스와 유닉스 운영체제는 ELF를 사용한다.

 

2. 티어 2

티어 1에 너무 많은 시간을 투자하지 말라. 사실 티어 1에는 5시간만 투자해도 티어 2 공부를 시작할 수 있다. 

티어 2는 훨씬 더 많은 성취감을 안겨 줄 것이며, 티어 2를 공부하는 것은 티어 1을 공부하는데도 도움이 될것이다.

 

* 기드라, Radare 2, Binary Ninja (유료) , IDA (유료) 등의 리버싱 도구들을 사용해보라. 기드라가 아마 초보자에게는 좋은 도구가 될 것이다. 그것은 무료이며 많은 기능들을 제공할 것이다. 그리고 기드라를 사용하는 방법들이 온라인에 많이 소개되어 있다. 

 

* 아마 간단한 프로그램을 C언어로 만든 뒤 너가 선택한 디버거로 어떻게 동작이 이루어지는지 보는것도 좋다.

또한 실행 파일 구조에 대해서도 공부하라.

 

* 또한 어떻게 디버깅이 이루어지는지도 공부하라. 쓸만한 디버거는 윈도우의 x64dbg, 리눅스에는 GDB가 있다.

 

3. 티어 3

이제 실전에 들어갈 차례다. 

 

* 온라인 문제들을 찾아보라. https://crackmes.one/ 에서 간단한 크랙미 문제들을 풀어볼 수 있다. 이는 너의 리버싱 기술들을 적용해 볼 수 있다.

 

* 그런 후, 바이너리 소프트웨어에서의 일반적인 보안 취약점에 대해 배우고, 그것들을 공격해 볼 수 있다. 그러한 공부는  https://www.vulnhub.com, http://root-me.org, http://pwnable.kr, 그리고 https://www.hackthebox.eu. 에서 할 수 있다.

 

* 패킹과 난독화에 대해 공부해보라. 비록 그것들은 상용 소프트웨어에는 매우 일반적이지는 않지만, 종종 멀웨어와 같은 것들에 자주 사용된다. 그래서 그러한 기술들은 아마 유용할 것이다.

 

* CTF들을 풀어보라. 최근에 개최된 CTF들에는 대부분 리버싱과 포너블이 포함되어있다. Flareon CTF는 모두 악성코드 분석들이며, RealworldCTF 는 현실의 소프트웨어의 취약점을 공격하는 문제들이 많다. 또한 http://ctftime.org 는 좋은 CTF과 풀이들이 많이 있다.

 

* 그리고 마침내 실제 프로그램들을 리버싱해 보라. 아마 너가 항상 궁금했던 소프트웨어가 있을것이다. 

 

결론

비록 나는 3단계로 나누었지만 나는 당신이 그것들을 거의 동시에 하기를 매우 권장한다. 배움은 반복적인 과정이다. 

저 3단계는 상호보완적이며, 당신이 많은 지식과 연습을 할 수 있게 도와줄 것이다.

'리버싱' 카테고리의 다른 글

리버싱 공부시 나와의 약속 (5~6월달)  (0) 2021.05.09