2012년 8월 17일 금요일

해킹의 분류 [3] - 리버싱




제가 발표때 쓰려고 만든 자료를 정리해보고자 합니다.

부족한 점이 많으니 틀린 부분이 있으면 지적해주시면 감사하겠습니다.


리버스 엔지니어링, 즉 리버싱이란 장치 또는 시스템의 기술적인 원리를 이해하며

단점을 보완하고 새로운 아이디어를 추가시키는 일련의 작업을 말합니다.

다른말로, 일반적인 소프트웨어 제작 과정을 역행(리버스) 하는 과정입니다.

주로 다른 회사의 소프트웨어를 분석하거나, 자신이 제작한 소프트웨어를 업데이트,

혹은 오류를 제거하거나 패치할때 사용됩니다.

뿐만 아니라, 악성코드를 분석할때 리버싱이 사용됩니다.

하지만 이를 악용해, 해킹을 시도하는 사례가 자주 발생합니다.

리버싱 해킹의 가장 일반적인 예로, 키젠과 크랙을 들 수 있습니다.

소프트웨어를 설치할 때 보통 시리얼 넘버를 요구하는 경우가 많은데,

리버싱 과정을 통해, 시리얼 넘버의 알고리즘을 분석해 키젠을 만들어

소프트웨어를 불법으로 사용하는 경우가 많이 있습니다.


특히 게임을 해킹하는 사례가 많으며, 위의 사이트는 게임 해킹과 불법 복제로 유명한

skidrow(스키드로우) 해커 그룹의 홈페이지입니다.

여기서는, 스타크래프트 설치 파일을 분석해서, 잘못된 시리얼 키를

올바른 시리얼 키로 인식하고 설치를 진행하는 대략적인 리버싱 과정을 보여드리겠습니다.

자세한 분석은 스타크래프트 시디키 알고리즘 분석 [1] 을 참고하시기 바랍니다.


위의 사진은리버싱에서 사용하는 여러가지 도구들의 아이콘들을 보여줍니다.

첫 번째 줄의 도구들로 실행 파일을 실행하기전에 전체적인 분석하고,

두번째 줄의 도구로 직접 명령어를 한줄씩 실행하며 세부적인 분석을 하게 됩니다.


먼저 Ollydbg와 immunity debugger 와 같은 디버거로 실행파일을 여시고,

자신이 찾고있는 부분의 명령어가 어디인지, 추측과 검사의 과정을 반복하며 알아갑니다.

그 명령어를 찾은 후에는, 명령어를 어떻게 바꿔서 자신이 원하는 결과가 나오도록

프로그램을 바꾸게 됩니다.




위의 사진은, 분석이 끝난 실행파일이며,

잘못된 시리얼을 입력한 후 ok 버튼을 누르면


이처럼 정상적인 시리얼 키로 인식하고, 설치가 진행이 됩니다.


위와 같은방법으로 워크래프트 3 설치 프로그램를 분석해서

자신이 원하는 결과가 나오도록 프로그램을 변경하실 수 있습니다.


여담이지만, 스타크래프트 이후에 나온 워크래프트3의 시디키 알고리즘은

스타크래프트의 경우에서 처럼 루프가 시리일키 길이만큼 반복되는 것이 아니어서

그 알고리즘 분석이 더 어렵습니다.

그러나 원하는 결과를 만드는 과정에서, 알고리즘 분석은 필요하진 않습니다.

스타크래프트 설치 파일의 과정에서처럼 잘못된 시리얼 키를 입력해도

원하는 결과가 나오도록 프로그램을 수정하실 수 있습니다.

리버싱은, 자신이 원하는 명령어를 찾기위해 추측과 검사의 과정을

반복해야 하는 경우가 잦습니다.

따라서 여러 프로그램을 리버싱 하시면서 그 요령을 찾아가셔야 합니다.



ps.

이러한 리버싱은 절대 악용 하시면 안되며, 연구용으로만 사용하셔야 하고,

절대 상업적으로 이용하셔서는 안됩니다.

공부를 하기 위해서 해킹하는 것이지, 해킹을 하기 위해 공부하셔서는 안됩니다.



ps. 리버싱 공부 자료


[Reversing]


============[하]============

1. www.reversecore.com

레지스터, PE 구조, 루트킷, dll injection 등

리버싱의 기초부터 실전까지 다루고 있는 블로그 입니다.

블로그 글 처음부터 쭉 보시면 도움이 많이 될거 같습니다.

참고로, 리버싱을 배우시면 루트킷, 키로거 등의

악성코드를 분석하시고 만드실 수 있습니다..


2. http://blog.naver.com/PostView.nhn?blogId=sol9501&logNo=70108175475&categoryNo=93&parentCategoryNo=0&viewDate=&currentPage=5&postListTopCurrentPage=1&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=5

PE 구조, lena's reversing 강좌 등

reversecore와 함께 보시면 좋을 자료들이 많습니다.

이 블로그엔 링크가 자주 나오는데 그거까지 다 보시면

진짜 도움 많이 됩니다.


3. http://zesrever.tistory.com/55

PE 구조 등

위 블로그들 볼때 같이 보시면 도움이 될거 같습니다.


4. http://tuts4you.com/download.php?view.2876

리버싱을 실습해 볼 수 있는 크랙미 자료와 강좌입니다.

기초부터 시작하며 강좌도 정말 좋습니다.


5. http://codeengn.com/

크랙미를 제공하는 한국 사이트입니다.


6. http://simples.kr/

크랙미를 제공하는 한국 사이트입니다.



============[중]============

1. http://sinun.tistory.com/95

악성코드 분석자료가 많은 블로그 입니다.

2. http://fumalwareanalysis.blogspot.kr/p/malware-analysis-tutorials-reverse.html?m=1

악성코드 분석 방법에 대한 튜토리얼이 있는 블로그 입니다.

진짜 교수님 강의급 설명들만 있으며, 나중에 여기 글들

같이 분석해 보고 실습도 해보면 좋겠습니다.



============[상]============

1. http://espionageware.blogspot.kr/

악성코드 분석 자료가 많은 블로그이며 영어입니다.





댓글 없음:

댓글 쓰기