블로그 이미지
Flying Mr.Cheon youGom

Recent Comment»

Recent Post»

Recent Trackback»

« 2024/5 »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

0. 시작하며.

리버싱을 하는 대부분의 사람들은 돈을 벌기 위해 하는 경우가 많다.

사이버 꽃뱀, 스매싱 등의 프로그램은 중국발이 많으며, 대부분은 마약거래범들이 투잡으로 하는 경우가 많다.

사이버 꽃뱀 : 스카이프등을 이용하여 음란한 대화를 유도한 후, XXX챗 어플 사용을 유도, 개인정보( 연락처 등 )을 강제로 흭득한 후, 주변인에게 알리겠다고 협박하여 돈을 갈취.

기존에 출시된 제품에 대해 리버싱하여, 정품보다 1/5정도로 더 싸게 하여 유사품 출시.

아이폰의 충전 암호칩이나 토너재생품등이 대표적이다.

튜링상을 받은 유닉스 창시자가 수여식에서 발표한 논문은 'Reflection on trusting trust'이다.

그 논문의 내용은 우리들이 믿고 있던 login Module에 대해 속았다는 것이다.

login.c 소스코드에는 이상이 없으나, 컴파일시에 '어느 하나의 아이디와 암호를 입력하면 모두 통과'시키도록 했다는 것이다. 즉, 소스코드보다 실행되는 실체가 더 중요하다는 이야기를 하고 싶었던 것이다.

( 그래서.. 컴파일시에 취약점을 검출하는 것이구나.. 라는 생각이 들었다. 그냥 컴파일시에 하는 파서를 활용하여 하는 줄 알았는데, 이런 것과 연관성이 있다니.. )

 

1. 암호화의 필요성 

RSA timing attack in OpenSSL code.

구글에서 '삼성 리버스엔지니어링' 검색했더니, 최근 취약점에 대한 내용의 포스팅이 있었다.

http://hustoknow.blogspot.kr/2013/05/reverse-engineering-samsung-sde-5001.html

SSD의 핵심기술은 R/W가 고루 이루어질수 있도록 하는 FTL기술이다. SSD( nand flash ) 는 HDD와 드라게 10만 읽고 쓰면, 해당 블럭을 더이상 사용하지 못하기 떄문이다. 아직 중국에서 흉내내지는 못하고 USB를 넣고 외형만 SSD인것처럼 판매하고 있다.

SmartGrid에도 리버싱 엔지니어링이 가능하다. 스마트 그리드는 자체 에너지 시스템으로 지능형 전력망 시스템으로 보면 된다.

자동차에도 CAN이라는 시스템을 해킹하여 악성코드를 넣어서 사용할 수 있다.

자동차 회사에서 급발진 오작동에 대해 시스템 문제인지 사용자 과실인지 확인하기 위해, 무작위 300명을 모집하여 레포트를 냈다. 휴대폰 10만대에 해당하는 전자파 실험군과 사용자 실수를 유발할 수 있는 실험군으로 뒀을 때, 기혼 여성 2명에게서 급발진과 유사한 결과를 냈다. 그 레포트가 지금까지 법정에서 판례로 사용되고 있다.

Software R/E에서 Windows PE, Linux ELF는 인터넷에 검색하면 많은 자료가 있지만, Embedeed의 Binary, Opcode를 리버싱하는 자료는 많지 않다. CPU를 기준으로 Opcode로 접근한다.

Hardware R/E를 하는 곳이 국내에 Crypto Research, Chipworks가 있다. 이 업체들도 인수됐다.

Hardware R/E를 하기 위해서는 키 값을 저장해 두어야 한다. 그 부분을 ArmTrustZone에 둔다. 이 부분을 알아내려면 Software R/E가 아니라 Hardware R/E로 트러스트존을 해킹 해야한다.

키를 알아낼수 있는 방법이 SideChannel Attack이라 한다. SPA( Single power analysis ), OPA 라고 부른다.

현존하는 Software는 전부 리버싱이 가능하다고 보면 된다. Software R/E를 아주 잘하는 사람도 Hardware R/E쪽에는 쉽게 접근할 수 있는 분야가 아니다. Software R/E부분은 사람에 따라 시간적 차이가 있을 뿐 결국 해킹이 된다는 말이다.

 

2. 소개

해외 리버싱 관련 교육 비용은 일인당 사백씩 든다. 교육의 내용은 매우 기초 수준이지만, 좋은 연대를 맺기 위해 교육을 듣는 사람도 있다고 한다.

BlackCat 참여비가 300만원 정도 든다.

시스코의 라우터에 패킷하나를 보내서 원격 exploit를 할수 있는 취약점도 존재 했었다.

실습용 virtual box 사용. 바탕화면에, CFX, ida pro free, immunity debugger, ollydbg, pdfStreamDumper가 있음.

추가 툴로는, Autoruns, CompoundViewer, DiskMon, DiskView, FilemonNt, Hex Workshop, IDA, ImprtREC, LordPE, obdg200k, OllyDRX, PDF_Analysis, PEditor 1.7, PEiD, PEView0.9.8, ProcessExplorer, ProcessMonitor, PsTools, RegmonMonitor, Stud_PE, WMUpacker가 있다.

 

- 오후 -

 

3. 배경

Source -> Binary : Source;Code( 함수명, 변수명 )를 Stripped Binary 으로 ASM CODE, DATA를 만든다.

Software Breark Point : INT 3, 소프트웨어 실행시점에 Break할 수 있다.

Hardware Break Point : D/Register 0~3, Read/Write/Excuete 로 나누어 Break할 수 있다.

 

C 소스코드 중에서 printf같은 경우는 dynamic lib다. 일반 foo()함수는 static lib이다. static lib는 excute binary에 포함된다. 이 말의 뜻은 excute binary의 asm에 printf;dynamicLib은 기록되어지고, foo;staticLib는 asm으로 기록되어 있다. 실질적인 예를 들어서 설명하자면, 암호화 모듈을 dynamic lib로 하여 컴파일한다면, secureEncode()함수가 asm에 나타나와있게 된다. 리버싱 공격자는 이런 흔적을 토대로 접근한다.

즉, 가능하다면 secure관련 모듈은 dynamic module 보다는 static module로 binary에 모두 포함되어 공격자가 흔적을 찾을 수 없도록 하는 것이 좋다.

 

 

4. 배경

ASM의 실행코드는 Register, Memory( Stack, Heap )에 올라와 있다.

x86 processor ( 32bit ) 를 대상으로 설명함 :

EIP, EFLAGS

EAX, EDX, ECX, EBX

ESP, EBP, ESI, EDI

Register는 4가지 주소체계를 가지고 있음 : Lower 8bit, Mid 8bit, Lower 16bits, Full register

ex. ) EAX( 32 ) -> AX( 16 ) -> AH( high 8bit ) : AL( lower 8bit )

ASM 함수의 리턴값은 EAX에 둔다.

ASM 함수 파라메터는 지역변수와 비슷하게 저장하고 버려진다.

함수 역할이 완료되면 Return Address를 참조하여 호출 전 위치로 돌아간다. 이 부분의 취약점을 사용한 공격법이 StackOverflow다.

 

 

5. x86 excution

함수의 진입부를 에필로그, 반환부를 프롤로그라고 한다.

에필로그는 기존 버퍼를 백업하고 현재 파라메터와 지역변수를 채운다.

프롤로그는 백업된 버퍼를 복구하고 반환주소로 돌아간다.

lea : load effective address

지뢰 찾기로 예제로 가지고, 지뢰를 다 찾아내는 걸 해봤다. IDA로 지뢰찾기( c:\windows\system\winmine.exe ) 실행파일을 불러온다. ShowBumbs 함수를 추적해 본다. 추적한 그 함수를 DeRox를 이용하여 해당 함수를 F1( DoHelp ) 대신에 실행되도록 한다. ShowBumbs는 지뢰 밟았을 때, 호출되어 모든 지뢰가 나타나도록 하는 함수다. 이 것을 이용하여 도움말키를 누르면 지뢰가 모두 보이도록 하는 것이다.

 

 

* 일반적인 교육 내용에 대해 정리했으며, 이슈가 될 사항이 있다면 비밀댓글 달아주시기 바랍니다.

 

 

: