2010.08.19 09:50 Etc../잡담

http://m.news.naver.com/rankingRead.nhn?sid1=105&oid=002&aid=0001964021

수년 전부터 문제가 되어 온 것입니다만

대한민국이라는 나라에서 IT 개발자가 살아남기는 쉽지 않아 보이네요

저도 이제 나이를 먹어가는 만큼 슬슬 저런 기사를 단순히 농담으로만 받아들일수가 없게 되었습니다 :(

Devpia에 아예 개발자 고충 상담 란이 있을 정도입니다


<그림1. 개발자들의 대표 커뮤니티 Devpia, 그곳의 고충상담란. 애인이 너무 이뻐서 고민이라면 이곳으로! 읭? >

흠 올라온 글을 죽 읽어보면 뭐 좋은 소리는 찾아보기가 힘들군요

대책을 마련해봅시다

이럴때 구글링이죠


<그림2. how to survive... 응?>


물론 우리나라 내에서도 IT 개발자가 대우 잘받는 곳도 있겠습니다만...

대부분 좋은 환경에 놓인것 같지는 않네요

이 덕에 외국으로 눈을 돌리는 사람들도 많습니다

미국의 인기직종 Top 10 을 살펴볼까요?


<그림3. 우리나라 비인기 직종 Top 10인가요?>

우리나라에선 있을수 없는 일이 벌어지는군요

코드 짜다 막히는게 있으면 개발자의 최종테크인 치킨집에 찾아가서 사장님께 여쭤보면 된다는 일화는

이미 전설이 되었으며 그 영역을 넓혀가고 있는 추세입니다


<그림4. 40대 농부의 위엄>

우리나라에서 문제시 되고 있는건 개발자의 처우, 그리고 대기업과 중소기업간의 관계 구조 입니다

처우 개선을 위해 도입되었던 소프트웨어 개발자 신고제는 이미 개발자의 경력, 연봉을 깎아먹는 수단으로 전락해버렸으며

하도급 관계 구조는 상생, 상식이 통하지 않는다고들 말합니다

이게 바로 IT강국 대한민국의 위엄인가요?


대책 없이 푸념만 늘어놓는 것 같아서 제 자신도 미워집니다 

제 자신이 좋아서 택한만큼 어느 정도는 각오해야 겠죠

그리고 주위 환경 투정을 부리기 앞서 이 미천한 주인장의 지식 테크 부터 올려야겠습니다

투정부리는 포스팅은 최종테크 치킨집에서 하도록 할께요 :D

'Etc.. > 잡담' 카테고리의 다른 글

Cyber War  (0) 2010.09.29
알송 광고 제거 하기  (19) 2010.08.31
'일의 노예' 한국의 IT개발자가 사는 법  (0) 2010.08.19
iPhone / iPad 0-day PDF Exploit!  (0) 2010.08.05
디지털 해적 전용 통신망?  (2) 2010.07.29
OWASP Top 10 2010 정식 버전 Release  (0) 2010.07.28
Posted by LinkC

2010.08.17 10:32 System

<그림 1. Windows 버전별 적용 Memory Protection>

08년도 Black hat 에서 공개된 문서입니다

벌써 2년이나 지났네요

주인장은 나날이 잉여력을 뽐내는데 배울건 한없이 늘어나네요 

이 기술들을 일일히 나열하려면 끝이 없을거 같으니 

간단히 소개하는 정도로 포스팅을 마치겠습니다

[+]GS

GS Flag를 셋팅하여 Buffer가 변조되었는지 체크 합니다

해당 옵션은 VC 옵션에서도 찾아볼 수가 있죠

<그림 2. VC에서 GS Flag를 설정하여 Stack Cookie Option을 On 시킨 모습 - Default>

이 Protection Mechanisms 은 Linux 의 StackGuard 형식과 유사합니다

스택상의 Return Address 앞에 공간을 할당하여 Cookie를 가리키는 포인터를 저장하는 거죠[ 이를 Security Cookies 혹은 Stack Cookie 라고 합니다 ] 

<그림 3. 함수 내에서 Security Cookie 를 체크하는 부분>

함수가 시작 될 때와 종료될 때 가리키는 Cookie 값을 비교하여 다르면 Process를 종료하는 식입니다


[+] Safe SEH [ Structured Exception Handling ]

SEH 는 프로그램 내에 예외상황이 발생했을 때 실행되는 코드입니다. 

런타임에 예외가 발생하면 OS는 이미지 헤더를 확인해서 SEH 주소가 올바른지 여부를 판단하고, 그렇지 않을 경우 

종료합니다


[+] DEP

프로그램 내 Exploit 코드 실행을 방지 합니다

일반적으로 Code Injection 등을 통해서 쉘코드를 실행시키려고 하면 이 Prtoection 에 걸려버리는걸 확인할 수 있죠



해커들이 DEP를 꺼버리고 공격하는 방법을 이용 하자, 영구 DEP를 걸어버리죠

물론 이 마저도 우회하는 방법이 추후에 나왔지만요

[+] ASLR

Windows Vista 나 7 환경에서 디버깅을 해보신 분은 알겠지만 

프로그램이 로딩되는 OEP의 주소나 스택, 힙 모든 값이 실행할 때마다 변하는걸 보신 적이 있을 겁니다

바로 이 기술의 적용 때문인데요

PEB나 TEB는 XP에서부터 적용이 되고 있었군요 :D



살펴보면 Memory Protection 이 정말 많네요

물론 한번에 적용되었던 것이 아니라 몇년에 걸쳐서 이루어진것입니다

후에 적용된 기술이 아무래도 Exploit 하는데 좀 더 까다로운 모습을 보이죠

*Dino A.Dai zovi의 다음 문서를 참고했음을 알립니다



<그림 4. 기술들의 Exploit 어려움 정도>



또한, 이러한 기술들은 단순히 한가지 분류가 아니라 3가지

Compiler 와 Application  , OS Run- Time 으로 나눠 보여주는군요


<그림 5. OS, Compiler, App 가 Base가 되는 기술들  >



간략히 Memory Protection 에 대해서 정리했습니다

물론 앞으로도 이러한 Protection 을 우회하는 방법은 나올 것이고

그에 따라 Protection 기법들도 업그레이드 해나가겠죠

절대적인 창도 , 방패도 없는 그런 분야니까요

각 기술들에 대한 자세한 정리는 차후에 차근차근 해나가야겠네요

그 날짜가 언제가 될지 모르겠다는게 문제지만요 :(

뭔가 알맹이가 없는 포스팅만 하는거 같네요
 
럭셔리한 포스팅을 하는 그날까지 분발해야겠습니다

...

라고 말하는것도 몇번짼지 모르겠네요


'System' 카테고리의 다른 글

UAC 적용 조건 및 사례  (0) 2010.09.29
DLL Hijaking Exploit in Windows Movie Maker  (0) 2010.09.06
Memory protection mechanisms in Windows  (4) 2010.08.17
DLL injection on 64 Bit OS  (2) 2010.08.03
Screen Capture with DLL injection  (2) 2010.07.27
서비스 프로그래밍  (3) 2010.04.27
Posted by LinkC

2010.08.05 13:51 Etc../잡담

지난 3일

iPhone은 보안제품이 필요없다고 외치던 사람들을 비웃기라도 하는듯

iPhone / iPad / iPod 에서 모두 Remote Exploit 가능한 0-day가 등장했습니다 XD


그림1. vupen 에 등재된 iphone 취약점

에서 보시면 알겠지만 이미 Critical 한 취약점으로 분류되어 등재되어 있구요

어떤 식으로 이 Exploit 이 이루어지느냐 하고 찾아봤더니


그림2. Exploit의 적용점 

그림을 보면 아시겠지만, 많은 사람들이 초기에 FlateDecode에 취약점이 있다고 생각했으나

결국 CFF와 kernel 취약점의 아름다운 조화로 이루어진 결과였음이 밝혀졌습니다

PDF 문서의 CFF [ Compact Font Format ]을 처리할때 메모리 충돌이 일어나는 것인데, 이를 이용해서 

공격자가 임의의 코드를 삽입할 수 있습니다

이에 짬뽕으로 적용된 커널 취약점은 권한을 상승시키고 Sand box 제한을 우회하는 것을 가능케 합니다

한마디로 PDF 파일 하나로 타인의 폰을 정 ㅋ 벅 ㅋ 할 수 있게 된겁니다


라는 유명한 아이폰 탈옥 자동화 사이트에서 이용된 PDF 파일이 시발점 [욕 아닙니다 :D] 

이 되었다고 합니다

아직 애플에서 대응은 없으며, 악의를 가지고 있는 사이트에 접속만 하면 그대로 자기 폰은

알 수 없는 악의 무리의 마수에 빠지게 됩니다

더구나 , Adobe 문제도 아니고 Apple 측의 문제로 확실시 되고 있어

아이폰 사용자들의 불안은 커질 수 밖에 없겠죠



실제 Exploit 장면이 담긴 영상입니다

악의적인 목적은 아니지만, 이정도면 얼마나 심각한지 아시겠죠?
현재 치료법... 이라고 말하긴 뭐하지만

임시 방편으로써, 위와 같은 PDF 파일을 실행 시킬때 사용자의 의사를 묻는 그런 앱이 등장했습니다


그림3. 임시 방편으로 등장한 App

매우 아이러니 하게도 현재 취약점은 Jail Break 여부에 상관하지 않고 적용되고 있는데

Jail Break 한 iPhone 에서만 작동이 가능하다는군요 


흠.. 아무튼 

이번건 꽤 큰 이슈가 될 것 같군요

한창 사람들이 스마트폰에 눈독을 들이고 있는 참이니까요

우리나라만 해도 벌써 전체 핸드폰 수가 인구수를 넘어섰고

스마트폰 사용자는 괄목할 만한 성장세를 타고 있다고 합니다

이는 아이폰 4가 출시되면 더 가속화하겠죠

아이폰 4가 나온 다른 나라야 뭐 할말도 없구요

저는 아직도 노예계약이 1년도 넘게 남은지라 꿈도 못꾸고 있지만요 ㅠ,.ㅠ

봇넷이 이런 취약점으로 이용되면 어떨까요?

대 스마트폰 봇넷 시대가 열리는 걸까요? :D




 





Posted by LinkC

2010.08.03 19:24 System

얼마전에 ReverseCore님께서 Windows 7 에서 Injection 하는 방법을 포스팅 하셨죠

얼마전이라기 보단 꽤 됐지만..

http://www.reversecore.com/73

굉장히 정리가 잘되어있으니 한번 보시면 큰 도움이 될겁니다 :D

아무튼 요는 Windows7 에서 Session 관리 정책이 변경되면서

CreateRemoteThread()가 먹히지 않게 되었고

ntdll!ZwCreateThreadEx()를 직접 호출함으로써 해결 할 수 있다는 것입니다

하지만 이 방법도 64bit 에서는 되지 않더군요

64bit OS에 Global API Hooking을 할 때 , 이건 문제가 되겠죠

64bit process를 차근차근히 보시면  , 64bit 에는 64bit dll만 로드 되어 있는 것을 볼 수 있습니다



그림1. 64bit Process 내에 Load 되어 있는 kernel32.dll 의 정보


*32bit process 에서 사용 되는 시스템 dll 의 경우 syswow64 폴더의 dll을 쓰게 됩니다


그림2. 32bit Process 내에 Load 되어 있는 kernel32.dll 의 정보

그리고 이 64bit dll 을 Injection 할 때 32bit Program 으로는 되지 않는 것 까지 확인했습니다


그림3. 32bit Program 에서 64bit dll 을 Injection 할 때 실패하는 모습



64bit dll 을 Injection 할 때는 64bit Program 이 필요한게 아닌가 싶었습니다

64bit 로 컴파일 하여 시도해보니


그림4. 64bit Process 내에 성공적으로 Injection 된 모습

네, 제대로 Injection 이 성공한 것을 볼 수 있습니다

즉, 64Bit Process 에 Injection 을 하고자 하면

64Bit Injection Program 으로 64Bit dll 을 Injection 해야 한다


는 것이 이 포스팅의 요입니다

고로 , Global API hooking 등을 하고자 할 때는

64bit용, 32bit 용으로 나눠

32bit injection program, 32bit dll

64bit injection program, 64bit dll

이렇게 제작해야 올바르게 작동합니다

64bit dll 은 64bit로

아, 어찌보면 정말 당연한 건지도 모르겠지만

처음에 부딪혔을 때는 왜안되나 했네요 :D



How to Compile a 64bit application or dll?

64bit 용 dll 과 application을 얻고자 하신다면

64bit 용으로 compile 하셔야 합니다

찾아보니 대략 2가지 정도가 있던데요

물론 더 있는데 제가 못본거겠지만..

Microsoft Platform SDK 의 64bit Build Enviorment 를 이용하시는 방법과

Visual Studio 2005 이상의 버전을 이용하시는 법이 있습니다

전자의 경우 Visual Studio 6에서도 적용가능한 방법이지만

MakeFile 을 작성해서 64bit Build Enviroment 창에서 Compile을 시키는 형태입니다

필자의 경우 후자의 경우가 더 편해보여서 이를 이용했습니다

다만, Visual Studio 설치 시 별달리 건드린게 없으시다면

64bit Compile Tool 이 깔려있지 않을 겁니다

그런분은 제어판의 프로그램 추가/제거에서 Visual Studio 2005 이상의 버전을 누르셔서

메뉴를 보시면~

다음과 같이 x64 Compilers and Tools를 발견하실수 있습니다

이를 체크하시고 설치하시면 됩니다 :D




이 설정을 해 주셨다면 Visual Studio 를 실행하시고

Compile 시에 상단의



Platform 의 new 부분에 들어가셔서

x64로 설정하시면 됩니다

다만, Compile 시에 64bit 와 32bit 의 차이점은 고려하셔야 겠죠? :D



'System' 카테고리의 다른 글

DLL Hijaking Exploit in Windows Movie Maker  (0) 2010.09.06
Memory protection mechanisms in Windows  (4) 2010.08.17
DLL injection on 64 Bit OS  (2) 2010.08.03
Screen Capture with DLL injection  (2) 2010.07.27
서비스 프로그래밍  (3) 2010.04.27
System Information 을 가져오는 API  (2) 2010.04.21
Posted by LinkC

2010.07.29 08:39 Etc../잡담

보통 인터넷으로 정보를 무제한 공유하자는 뜻으로 뭉친 사람들을 일컫습니다

해적판이라는 말에서 기원하지 않았나 싶습니다만

흥미로운 주제임이 틀림없군요

요즘은 오픈소스 정신이 대세이긴 한가 봅니다

안드로이드 같은 개방형 플랫폼이 인기를 얻는것도 그렇구요

이건 Cracking 때문에 라이센스가 있는 프로그램들이 빛을 잃고 있다는 점도 한몫하고 있겠죠

사용자 입장에서 보면 위와 같이 무료로 무제한 정보 공유를 한다는 것은 참 매력있는 말이 아닐 수 없습니다

반대로 기업의 입장에서는 이것만큼 눈의 가시인것도 없을겁니다

그만큼 이런 주장을 하고 있는 사람들이 활동하기는 어려워보입니다만

놀랍게도 독일과 스웨덴 , 프랑스, 스페인 지방에서는 정당으로 정치적으로 활동하고 있다고 합니다

다음은 해적당의 심볼이라고 하는군요 :)






게다가 유럽의회 선거에서는 7.4%의 득표를 얻으며 첫 의원을 배출했다고 하니 우리나라에선 상상도 못할 일이죠

'해적당'으로 불리는 이 정당은 최근 해적전용 광대역 통신망을 설치한다고 합니다

Pirate ISP 라는 이 서비스는 로그도 남기지 않고 익명으로 이용할 수 있다고 하는군요

악용될 여지도 있겠습니다만, 이들의 행보는 앞으로 좀 더 지켜봐야 할거 같군요

다음은 해적당의 한 당원과의 인터뷰 영상입니다




이건 유세 장면!





The Pirate party, It looks so Coooooooooool! :D




Posted by LinkC

2010.07.28 09:05 Etc../잡담

작년 11월쯤에 RC 버전이 나와있었는데


지난 19일에 OWASP Top 10 2010  영문판이 정식으로 release 되었습니다




다음 링크를 보시면 PDF 파일을 받아보실 수가 있어요~

http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

다음은 2007 에서 2010년까지의 OWASP 변화점입니다



**7.28 한글화 문서가 나왔더군요

출처는 SecurityPlus 입니다

http://www.securityplus.or.kr/xe/?document_srl=25853






Injection 과 XSS는 항상 1,2위를 가지고 왔다 갔다 하고 있네요

기존에 3위였던 악성 파일 실행은 빠졌네요

3위였던게 3년뒤에 그새  빠진걸 보면 정말 웹은 그 해 트렌드를 많이 타는거 같은데

기존에 있던 취약점이 한순간에 고쳐지지는 않아서 순위만 좀 변동 되지 아주 물갈이 되지는 않군요

이번에 추가된

A6. Security Misconfiguration 은 모든 웹 서비스 관련된 컴포넌트와 라이브러리의 보안 패치 관리,

불필요한 것에 대한 삭제와 비활성화, 디폴트 계정 변경과 비활성  등을 말한다는군요

A10 . Unvalidated Redirects and Forwards 는 모든 코드상에서의 리다이렉션과 포워드 사용시

허용된 방향과 컨텐츠 요소를 포함하는지, HTTP 응답 코드 300 - 307 사이의 응답에 있어 제공된 파라미터가

적절한지 여부와 정의대로 URL 리다이렉션과 포워딩이 이루어지고 있는 지를 확인하는 것이라고 하는군요






우리나라 보안업계에서 일하시는 분들은 OWASP 를 싫어하는 분들이 많더군요

아, OWASP를 싫어하는게 아니라  OWASP를 절대적 기준으로 삼고 있는 분들을 싫어하는 거겠죠

다음은 Bug Truck 의 Matt Oh 님의 말씀입니다 [ 잘 꼬집어주시고 있다고 생각하셔서 퍼왔는데 , 문제가 있다면 삭제하겠습니다 ]



미국
          현실 -> 문서나 표준화
 
한국
         미국에서 받아온 문서나 표준화 -> 현실
 
이런식으로 적용되죠.
 
 
미국에서는 귀납식이 한국에서는 연역식이 적용됩니다.
 
예를 들어
 
미국
       스티브잡스가 태어나서 성장 과정을 거치고 애플 만들고 어찌 저찌 해서 아이폰, 아이패드도 만들어 냄
 
한국
       아이폰, 아이패드 대단한데 우리 나라 이거 왜 못 만들지 빨리 스티브 잡스 만들어 내
 
 
미국 잘 보면 철저히 경험 주의에 입각한 귀납식 IT가 적용되고 있는데 말이죠. 미국 -> 한국의 1:1 대응을 해 주려다 보면 참 골 아파지는 것 같아요.


구구 절절 맞는 소리가 아닐 수 없네요

물론 보안을 점검하는 기준이 있다는건 좋은 것이지만 말입니다 , 우리나라의 경우엔 정형화 느낌이 강하달까요

... 아무튼 제 생각은 이런데 다른 분들은 또 어떻게 생각할 지 모르겠네요
Posted by LinkC

2010.07.27 22:26 System



네 몇몇 분들은 알아보셨을지 모르겠지만

게임 촬영등에 자주 쓰이는 Fraps 란 녀석입니다

어쩌다보니 이 프로그램이 찍는 스크린샷의 방법에 대해 볼 일이 생겼습니다

대략 뒤적거리다 보니 인터넷에서는 이런 소스를 볼 수 있었습니다



문제는 IDirect3DDevice9 인터페이스 참조인 g_pd3dDevice 인데요

보통의 경우 CreateDevice()나 new Device()를 이용하면 됐습니다만

Fraps의 경우, 현재 프로세스에서 대상 프로세스의 Device를 얻어오는 방법이 좀 특이하더군요

화면 전체를 찍는 경우와는 달리 대상 프로세스의 핸들을 얻어와야 했는데

이를 넘기면 오류가 발생합니다

흠 대상 프로세스에서 직접 핸들을 전해주면 해결될텐데 말이죠

Process Explorer로 살펴보다 보니 , 다른 프로세스에 fraps.dll 이 로딩되어 있는 것을 볼 수 있었습니다

 


그러니까 fraps.dll 이 DLL injection 되었다고 볼 수 있죠

아마 Fraps는 fraps.dll 을 injection 하고 대상 프로세스에서 캡처에 필요한 정보를 받은다음

이를 토대로 파일을 생성하는 식일껍니다

실제로 Fraps 를 attach 시킨 후에

kernel32.dll 에 있는 CreateFile에 BP를 걸고 확인해보면

맞다는 것을 볼 수 있죠

그렇다면 Injection 된 dll이 어떤 역할을 하는지

잠깐 살펴보겠습니다

fraps32.dll [ 64bit 에서는 fraps64.dll 이 Injection 되겠죠? ]





뭐 대략 이런 DLL 입니다

아마 Fraps.dll 이 Loading 됨과 동시에 FrapsSetup을 통해서 가능한 Process에 Injection 을 할 겁니다

그리고 Screen shot 이나 동영상 촬영등을 할 때 필요한 단축키들을 잡아내야 하니까

Key Hooking도 하겠죠

의외로 하는일이 많군요

처음보시는 분이라면 ReverseCore님의 강좌를 보고 오시면 좀 더 쉽게 이해하실 수 있을겁니다

http://www.reversecore.com/30

그러니까 요는 Injection 된 프로세스 내부에서 입력된 Key Message 를 후킹한다는 거죠

설정된 키가 아니면 CallNextHookEx 을 통해서 통과시켜주구요

이렇게 잡은 Key 중에서 Screen shot 키를 걸러내서 따라가 보면

다음과 같은 부분을 보실 수 있습니다




OpenFileMapping 이라..

FileMapping는 메모리를 선언하고 선언한 메모리를 두개 이상의 모듈에서 서로 공유하여 사용할 때 쓰는 함수입니다.

기본적인 개념은 메모리를 파일처럼 오픈하고 한쪽에서는 데이터를 기록하고

한쪽에서는 데이터를 읽는 방식으로 데이터를 공유합니다.

서로 다른 모듈이 메모리를 공유할 수 있기 때문에 서로 다른 프로그램에서

데이터를 전송하고 전송 받고자 할 때 주로 사용하고 있습니다.

 즉, Fraps.exe와 Fraps32.dll이 Injection 된 프로그램간에 메모리를 공유하고 있다고 보시면 됩니다.

이를 좀 더 살펴보면 스크린샷 버튼을 눌렀을 때 , Injcetion된 프로그램에서
 
프로그램 내부에서 캡처된 화면의 정보를 Fraps.exe에 전달하고
 
이렇게 모은 정보를 Fraps.exe에서 Createfile을 통해 파일을 완성합니다.


뭐 Fraps는 이런 식입니다

다른 capture 프로그램도 이런 방식을 이용하는지는 모르겠네요

아마 영역을 지정해서 하는 프로그램이라면 DLL injection을 쓰지는 않을 거 같군요 흠흠

이런식으로 Capture를 구현할지는 몰랐네요

정말 배울게 너무나 많군요 :D





'System' 카테고리의 다른 글

Memory protection mechanisms in Windows  (4) 2010.08.17
DLL injection on 64 Bit OS  (2) 2010.08.03
Screen Capture with DLL injection  (2) 2010.07.27
서비스 프로그래밍  (3) 2010.04.27
System Information 을 가져오는 API  (2) 2010.04.21
What is VCP[Virtualized Code Protection]?  (0) 2010.01.29
Posted by LinkC

2010.07.19 15:45 Web


간만의 포스팅이로군요

주인장은 평소와 다름 없이 포풍 잉여의 기운을 풍기며 뒹굴거리고 있습니다

어쩌다보니 IE 제어 쪽을 조사하게 되었고 , 간단하지만 제가 조사한것들을 정리하는 차원에서

포스팅을 하도록 하겠습니다

일단 Web Browser 제어라고는 했지만 IE를 중점적으로 다룰 것입니다

사람들의 평이 좀 구리긴 하지만 , 우리나라 뿐만 아니라 전세계적으로 가장 많이 쓰이는 Browser 인것은 틀림 없으니까요

그렇다곤 하나 아마 구조는 대부분 같을 겁니다

브라우저에서 발생하는 이벤트를 잡아서 이를 제어 하는 것은 변함이 없을테니까요

예를 들어서, IE 의 대표적인 툴바인 알툴바를 살펴봅시다

일단, 알툴바는 BHO로서 동작을 합니다

BHO는 IE에서 동작하는 플러그인이라고 보시면 됩니다

ActiveX 와 개념이 비슷하다고 볼수도 있는데 ActiveX의 경우는 특정 사이트 내에서 동작을

BHO는 항상 IE에 상주하면서 동작한다고 보시면 될 것 같습니다

아무튼 ..

알툴바의 대표적 기능인 마우스 액션 같은 경우는 마우스의 이동 이벤트를 잡아내면서 동작을 하게 되죠

이러한 IE의 이벤트를 잡아 내기 위해서는 해당 이벤트를 관리하는 인터페이스의 포인터를 얻어야 합니다

MFC나 ATL을 이용해서 프로그램 내부에 IE를 띄우던, 프로그램을 이용해서 IE 창을 새로 만들어서 띄우던

ActiveX로 제작하여 띄우던 먼저 Web Browser 의 인터페이스를 얻어와야 한다는 것이죠

물론 각 방법마다 구현 방법은 다소 다르겠지만요

예를 들어보자면, MFC에서 프로그램을 이용해서 IE 창을 새로 띄우는 형식이라면




혹은 ActiveX를 이용한다면 미친병아리님의 코드




정도를 이용하면 됩니다

이렇게 IWebBrowser2의 포인터를 얻어왔다면

자신이 원하는 이벤트를 제어하는 함수를 포함하는 인터페이스의 포인터를 얻어와서 제어 하는 방법만이 남았습니다

마우스 오른쪽 버튼을 제어한다 라던가 드래그를 막고 싶다 라면

HTMLDocumentEvents2 를 얻어오셔서 이벤트를 잡아내시면 됩니다

웹 페이지의 이벤트, 그러니까 뭐 문서가 로딩이 완료되는 시점을 알고 싶다던가 하면 (이를 이용해 새로고침 되는 시점을 알아낸다던가 )

WebBrowserEvents2 를 얻어오면 되구요

아래 소스에서는 2가지 이벤트를 관리하는 인터페이스를 모두 얻어와보겠습니다



이렇게 IE의 이벤트와 Sink 하신 후에는

종료시에 Unsink 를 해주셔야 합니다


또한, 이벤트를 처리 하는 부분도 신경써주셔야 겠죠

DISPATCHMAP 을 작성하시고 그에 따라 함수를 정의해주시면 됩니다

자신이 catch 하시고 싶은 이벤트의 DISIP와 그 함수에 해당하는 인자등을 고려하셔서 구현해주시면 된다는 거죠

예를 들자면..




이에 따른 함수 구현은 대략 이런식으로 하면 됩니다



FALSE로 해주시면 이벤트가 일어나지 않은 것과 같은 효과를 내게 됩니다

오른쪽 클릭으로 발생하는 Context menu나 drag 등을 막게 되죠

Google Chrome이나 FireFox 등에서도 마우스 액션을 구현하기 위해 플러그인 형식으로 배포한 것들이 있더군요

그덕에 브라우저를 막론하고 마우스 액션은 잘 쓰고 있습니다

아마 두 브라우저 모두 구현방식은 비슷할껍니다

제가 앞서 말씀드린 이 방식들은 자바 스크립트에서도 아주 간단하게 구현할수는 있습니다

외부로 소스가 드러나는 만큼

썩 믿음직스럽지 못하긴 하지만.. 

그렇다고 플러그인 형식의 BHO나 , ActiveX 의 사용을 권장하는건 아닙니다

두가지 모두 악성코드의 주요 배포 수단으로 손꼽히는 원흉인 만큼

설치 및 사용에 주의가 필요하셔야겠죠

보안과 편의성 둘다 모두 챙기기란 참 쉽지 않아 보이네요 :(


'Web' 카테고리의 다른 글

웹브라우저의 춘추전국시대?  (0) 2010.09.13
Catching temporary I.E Files -IE 임시 파일 가로 채기  (5) 2010.08.24
Web Browser 제어 (IE [Internet Explorer])  (1) 2010.07.19
What is your Web Browser?  (0) 2010.05.28
What is BHO?  (2) 2010.05.24
html 5 vs Silverlight vs Adobe Flash  (0) 2010.03.04
Posted by LinkC

2010.07.06 18:59 WarGame

이 분야 문제는 바이너리로 남아있는 것도 아니고 삽질하면서 풀어보기도 불가능하네요

혼자 삽질해도 풀수 있을지 없을지도 의문이지만..

대회 끝나고 문제소스 등을 공개해주신다면 공부하는데 한결 수월할 것 같은데 말이죠

이번 문제 또한 자력으로 푼게 아니라 , 다른 사이트에 올라온 풀이를 보고 

제가  나름대로 정리하여 올렸음을 알립니다

갈수록 주인장의 잉여력이 묻어나는 군요

또한, 그림은 Wiki 와

http://netifera.com/research/flickr_api_signature_forgery.pdf

 에서 퍼왔음을 명시합니다

이러한 문제를 풀때마다 느끼는 거지만 정말 보안 분야는 넓네요

너무나 다양한 방법이 있고, 그 방법 마저 지속적으로 갱신되고 있으니까요


각설하고, 문제 풀이 들어갑니다

이번 문제는 8번 문제와 비슷합니다

input 값을 주면 그에 해당하는 Cookie 가 생성되고

이 Cookie 를 토대로 웹페이지에서 복호화하여 답인지 아닌지 체크 하는 형식이죠

input 에 aaaa를 넣는다면 다음과 같은 Cookie 가 생성됩니다

web1_auth = YWFhYXwx|8f5c14cc7c1cd461f35b190af57927d1c377997e


그리고 “Welcome back, aaaa! You are not the administrator.”

와 같은 메시지가 출력되죠

Cookie 는 | 를 기준으로 두 파트로 나눌수 있는데

첫번째 파트는 aaaa|1의 Base64 encoding 결과 입니다

두번째는 input 값에 길이가 달라지지도 않고

구성 문자 형식으로 볼때 hash 값이라는 것을 예측할 수 있습니다

길이가 40 이라는 것으로 sha1 으로 좁힐 수 있습니다

sha1 이나 md5 모두 Padding Attack  다른 용어로 length-extention Attack 에 취약합니다

이를 설명하자면.. Key 값인 m\, 자체를 몰라도   h(m)\, 과  len(m)\,  이 주어진다면

h (m||m')\,  을 알아낼 수 있다는 것입니다
 
|| 는 그냥 문자열의 연속이라고 보시면 되구요

이때 padding , extention 은 이 암호화 연산이 Block 단위로 이루어지기 때문에 마지막 Block 을 채워 넣는다고 하는데서

유래된걸로 보입니다

이를 나타내면 다음과 같겠죠




Sha1 의 Block Size는 512bit , 그러니까 64byte가 되겠죠



이를 시험해봅시다

위 참조 사이트에 있는 소스를 긁어서 보겠습니다



이때 필요한 sha1 hash를 수행하는 파일은


수행해보시면 아실수 있겠지만

orig_msg 의 길이는 25 이고

extention 이 적용된 msg 의 길이는 55 인것을 알 수 있습니다

여기에 key 의 길이 9를 합하면 64byte죠

즉 한 Block 을 채운것을 볼 수 있습니다





즉 extension 한 뒤에

add 함수를 이용하여 update 를 호출함으로써

새로 블럭을 생성하여 완성한다는 것입니다

물론 sha1, md5 등의 함수는 길이가 고정되어 있기 때문에

단순히 생성된 블럭을 이어 붙인다는게 아니라

완전히 다른 값이 생성되게 됩니다

아무튼 이렇게 생성을 하게 되면

key값을 모르더라도 key+orig_msg+padding+new_msg 의 Hash 함수를 구할 수 있게 되죠

인증 방식이 <name> | <role> 이기 때문에 가능한 방식입니다

만약 <role> | <name> 이었다면 이 공격 방식은 성공하지 않았겠죠


입력값으로 aaaa를  넣은 cookie 를 이용한다고 했을때

여기서 우리가 입력할 name 은  'aaaa|1'+<paddingggggggg>+'|0' 인 것입니다

|0 까지를 입력한 name 으로 인식하게 하려는 것이죠

실제로 나온 base64 Encoding 값인

YWFhYXwxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4fDA= 

을 decoding 시켜보면  

 aaaa|1€                               ?0

가 나오게 됩니다

이렇게 나온 Signal 값인  70f8bf57aa6d7faaa70ef17e763ef2578cb8d839 을 넣으면

인증을 통과하게 됩니다

재밌지 않나요? :D

'WarGame' 카테고리의 다른 글

ISEC 2009 Challenge 12 Solution  (0) 2010.08.23
ISEC 2009 Challenge6 with GOT OverWrite  (0) 2010.08.22
[ CodeGate 2010 ] Challlenge 15 풀이  (0) 2010.07.06
[ CodeGate 2010 ] Challenge 8  (0) 2010.06.22
[ CodeGate 2010 ] Challenge 7 풀이  (2) 2010.06.21
[ Python Challenge ] level 15  (0) 2010.06.08
Posted by LinkC

2010.07.06 13:54 Book



저자 권용휘
RODREAM.NET
MICROSOFT MVP, 데브피아 VISUAL C++ 시삽으로 활동하고 있으며 시스템 프로그래밍에 관심이 많다. 악성코드 제거기 '울타리' 프로그램과 시스템 최적화 프로그램 '클릭 투 트윅' 프로그램을 개발 및 배포하고 있다. 프로그래밍과 관련된 글을 읽고 쓰는 것을 좋아하며 CODEPROJECT, ROOTKIT 등에 글을 기고하고 있다. 전 세계적으로 많은 사람들에게 사랑 받는 그런 프로그램을 만들기 위해 노력하고 있다.

저자 김용현
WWW.YHKIM.COM
다수의 윈도우 유틸리티 애플리케이션을 개발하고 유지 보수한 경험이 있으며 2006년부터 MICROSOFT MVP, 데브피아 ARCHITECTURE, VISUAL C++ 시삽으로 다양한 강좌와 튜토리얼을 작성하고 다수의 프로그래밍 관련 세미나를 진행하고 있다. 끊임없이 새로운 것을 찾아 알아가는 것을 즐기며 현대 미술품을 감상하는 것과 아이들과 함께 웃을 수 있는 일을 좋아한다.

저자 신영진
WWW.JINIYA.NET
웰비아닷컴을 창업해 게임보안 제품을 개발하고 있다. 시스템 프로그래밍에 관심이 많고 다수의 PC 보안 프로그램 개발에 참여했다. 월간 마이크로소프트웨어의 오랜 필자이면서 MICROSOFT MVP, 데브피아 VISUAL C++ 섹션 시삽으로 활동하고 있다. STEVE BARAKATT과 그레이 아나토미의 광팬으로 한때는 WOW에 미쳤다. 요즘은 안드로메다 건너편 뚜루뚜루삘라 별에 있을 잃어버린 반쪽을 찾는 일에 전념하고 있다. 한마디로 괴짜다

 

3분 설명은 긁어다 온게 뭐할정도로 유명한 분들이시죠

저자분들 이름부터가 책의 내공이 어느 정도인지 설명해주고 있네요 눈이 부시군요 XD

지난 6월에 출간을 한 아주 따끈따끈한 책입니다

다음은 이 책의 챕터!

Chapter 01 윈도우 프로그래밍과 시스템 리소스
01 올바른 가상 메모리 활용
02 암호가 지정되지 않은 사용자 찾기
03 GUID와 유일한 성질
04 제어판 프로그램 활용의 비밀
05 문자열을 다루는 함수 선택 노하우
06 공유 라이브러리와 메니페스트
07 같은 라이브러리가 다른 버전으로 임베딩될 때
08 최신 라이브러리의 바인딩 상수 선언
09 힙 API 활용
10 윈도우 프로세스 완전정복
11 스택의 모든 것

Chapter 02 윈도우 프로그래밍 메커니즘
01 윈도우 비스타와 윈도우7 환경에서의 ActiveX 구현
02 승인 받은 프로그램을 사용한 크래킹
03 프로그램의 에러는 왜 발생하는가?
04 윈도우 비스타의 UAC와 후킹
05 윈도우 비스타의 IPC
06 비교분석! 뮤텍스와 바이너리 세마포
07 DLL을 만들 때 지켜야 할 일곱 가지 규칙
08 VMWare로 엿보는 윈도우 구조
09 점프리스트에 표기되는 애플리케이션 이름

Chapter 03 윈도우 프로그래밍 API와 라이브러리
01 엣지 있는 브라우저 연출
02 GlobalMemoryStatus의 함정
03 WinExec는 어떻게 동작하는가?
04 알쏭달쏭 경로 이야기
05 파일과 폴더 제대로 다루기
06 MFC 라이브러리의 함정
07 인스턴스에서 자신의 파일 경로 얻기
08 공용 라이브러리의 위치 지정 노하우
09 멀티스레드 환경에 임하는 프로그래머의 자세
10 알면 약, 모르면 독! FindWindow 활용
11 주의해야 할 API의 BOOL 변환 값 비교

Chapter 04 Visual C++의 기본 테크닉 활용
01 CRT 이야기
02 포인터의 크기, 제대로 알자!
03 트라이 그래프 사용설명서
04 브레이크 포인트 실전 활용
05 SAL을 이용한 API 설계자와 사용자 간 커뮤니케이션
06 링크 시 발생하는 에러를 추적하자!
07 다중 다이얼로그 환경에서의 탭 오더

Chapter 05 C/C++ 구조의 올바른 이해와 활용
01 실력 향상을 위한 C++ 구조분석
02 생성자와 소멸자, 특별한 작업을 만나다!
03 C 언어는 어떻게 동작하는가?
04 COM 내부 집중분석
05 ++ 연산자 다시 보기
06 STL 맵을 사용한 환경변수 관리
07 고급 매크로 표현식에 쓰이는 여섯 가지 테크닉
08 복잡한 포인터 선언, 쉽게 이해할 수 없을까?
09 안전한 프로그래밍의 관문, 예외 처리
10 선언했을 때 0으로 초기화되는 변수

Chapter 06 시야를 넓힐 다양한 프로그래밍 이슈
01 VM 기반 분석 도구, 이렇게 대응하자!
02 코드 크기와 코드 품질의 상관관계
03 NIM 게임으로 배우는 알고리즘 디자인
04 구현 사례로 보는 가상화 기술과 보안


재밌어 보이는 주제들이 가득하군요

허접한 필자는 배울게 너무 많아 보입니다

책 내용 기대하시는 분들 정말 많더군요

그만큼 저자분들이 대단하다는 것을 증명하는 것이겠죠 :D

저도 주문은 했는데 일주일이 넘도록 안오고 있네요

불티나게 팔려서 재고가 없다거나..

외계인의 습격을 받아 책 창고가 홀랑 타버렸다거나..

해도 일주일은 좀 너무하네요

물론 후자의 경우는 인도적 차원에서 봐줄 의향이 있습니다만..



저같은 경우 , 도서 11번가에서 주문했는데

다른 사이트도 현재 이러고 있는지는 모르겠습니다

혹  주문하실 생각이 있으시면 현재 도서 11번가는 하지 않으시는게 좋겠어요

아무튼 빨리 도착해서 볼 수 있었으면 좋겠네요




현재는 11번가에서도 책이 들어와서 정상적으로 발송되는거 같습니다 :)

'Book' 카테고리의 다른 글

[ Visual C++ 파워풀 개발 테크닉 ]  (0) 2010.07.06
[ 해킹, 침입의 드라마]  (0) 2010.04.30
해킹 공격의 예술  (0) 2010.01.19
[해킹. 파괴의 광학] 용어 정리 -1  (0) 2009.12.29
해킹, 파괴의 광학 [1]  (0) 2009.11.28
Google Hacking[2]  (0) 2009.11.28
Posted by LinkC
이전버튼 1 2 3 4 5 6 7 ··· 17 이전버튼

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday52
Today19
Total322,198

달력

 « |  » 2018.11
        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  

최근에 받은 트랙백

글 보관함


. .