2011.05.11 18:34 System

[+] Beginning



약 1년 전에 Google Chrome에서 웹페이지가 로딩 되지 않는 것에 대한 포스팅을 했습니다.

http://linkc.tistory.com/entry/Google-Chrome-Loading-Problem

sandbox 옵션을 사용하지 않으면 해결되는 문제였죠.

그 땐 그런가 보다 하고 넘어갔는데, 최근 다시 그런 문제가 생겨

왜 이런 문제가 일어나는지 , 해당 옵션을 사용하지 않으면 정상적으로 동작하는지

한 번 살펴보기로 했습니다.


[+] Problem



앞서 설명했던 대로입니다.

Chrome을 실행 하면 웹 페이지가 로딩 되지 않습니다.

또 가끔 페이지가 로딩 되더라도 다음과 같은 메세지를 뱉으며 죽어버리기 일수죠.

<Fig1. 크롬이 오류를 내며 죽는 경우>

개발자들의 센스가 보이는 문구네요. 귀엽죠?

<Fig1-2. 귀여워>


크롬을 실행 할 때는 물론, 실행 중에도 간혹 페이지가 뜨지 않는 현상이 발생합니다.


[+] Analysis


 

1. Session 및 Desktop의 생성

크롬은 Sandbox 기능을 사용하고 있습니다.

다음은 실제 크롬을 막 실행 시킨 직후의 모습입니다.


  <Fig2.  메인 크롬 Process의 WindowsStation>



크롬은 각 탭 하나마다 새로운 자식 프로세스를 생성하며, 탭 이외에도 Plug in 이나 확장프로그램을 사용하면 하나씩 늘어납니다.

<Fig2>를 찍을 땐 , 모든 확장 프로그램을 작동 중지한 상태에서 찍어서 2개만 떴지만, 실제 사용하는 확장 프로그램을 모두

사용하면 6~7개 정도의 크롬이 등장합니다.

아무튼 <Fig2>를 보면 아시겠지만 크롬의 WindowStation이 WinSta0 이외에도 하나 더 생성되어 있는 것을 확인할 수 있습니다.

WindowStation?

Session의 하위 개념입니다.

Session > Station > Desktop > Process 순으로 보시면 되겠네요.

자세한 사항은 다음 블로그에 상당히 정리가 잘 되어있으니 참고하시면 도움이 될겁니다 :D

http://www.benjaminlog.com/tag/%EC%9C%88%EB%8F%84%EC%9A%B0%20%EC%8A%A4%ED%85%8C%EC%9D%B4%EC%85%98



메인 프로세스는 이렇게 2개가 혼재하고 일반 탭의 자식 프로세스는 가장 하단의 WindowStation인 Service 어쩌구 하는

Station 만 존재합니다.

<Fig3. CreateWindowStation을 호출하여 Station을 만드는 모습 >

이후에 GetUserObjectInformation 을 이용하여

만든 Station의 이름을 가져옵니다.

<Fig4. GetUserObjectInformation을 호출하여 이름을 얻어온 모습. Service ~ >

확인해보면 <Fig2>와 같은 형식을 지닌 것을 알 수 있죠.

이후 호출하는 함수를 따라가보면 다음 함수를 호출합니다.

<Fig5. CreateDesktop을 호출하여 Fig3에서 생성한 Station 내부에 Desktop을 생성한 모습>

sbox . Sand Box 를 의미하는 것이겠죠?

0xD64 는 해당 메인 Process 의 PID 입니다.



2. Process 생성

<Fig6. CreateProcessAsUsesr를 호출하여 Process를 생성하는 모습>

해당 함수를 MSDN에서 살펴보면

<Fig7. MSDN에서 살펴본 CreateProcessAsUser>


CreateProcess 와 다른 점은 첫번째 인자가 추가되었다는 점 하나 뿐입니다.

이 hToken 값은 생성될 User의 Handle값이 되겠죠.

그리고  STARTUPINFO  구조체의 lpDesktop 변수에 앞서 생성해준 Station 과 Desktop 정보가 들어갑니다.

또한 , 바로 실행하지 않고 Suspend 상태로 Process를 생성하구요.

흠. 보통 일반적인 Process를 생성하는 방법과는 약간 차이가 있네요.

이후에 CreateJobObejct 를 통해 미리 생성해둔 Job에

AssignProcessToJobOjbect 를 통해 Fig6에서 생성이 완료된 Process를 Job에 추가시킵니다.

Job은 일련의 속한 Process에게 공통적인 정책을 적용하기 위해 사용한다고만 알아두시면 될 것 같네요.



3. Check Integrity

이 후 메모리의 무결성을 검사합니다.

이 무결성을 통과하지 못하고 문제가 발생한 경우는 제가 확인했을 때 IAT Hooking 이 이루어질 때 였습니다.

[ 다른 경우가 있다면 알려주세요! ]

해당 Hooking을 거는 프로그램이라고 하면 보안 프로그램이나 악성 프로그램정도가 되겠죠.

Sandbox 내에서 생성된 탭은 일반적인 방법으로는 Hooking 이 되지 않기 때문에

[ 물론 외부 Process와 통신이 필요한 tab은 Sandbox로 생성하지 않습니다. 그런 tab은 Hooking 이 걸리게 되죠. ]

부모, 자기 자신의 Process만 검사하는 것으로 보입니다.

체크후에는 VirtualAllocEx를 통해 Sandbox에 생성한 Process의 메모리에 접근합니다.

제가 확인한 경우는 2가지 입니다.

첫번째는 VirtualAllocEx에서 해당 Process로 접근 하는 메모리에 권한을 주지 않는 방법으로 차단하는 경우,

두번째는 특정 함수를 선택하고  ReadProcessMemory 를 이용하여 Hooking이 되었는지 여부를 확인하고 차단 하는 경우


입니다.

2가지 프로그램 밖에 테스트 해보지 않았지만 다른 것도 비슷할 것으로 보입니다.




4. Terminate Process Or Resume Process

3번의 Integrity 를 통과하지 못하면 Process를 Terminate 합니다.

Terminate Process가 실패하면 GetExitCodeProcess을 통해서 Process를 종료하구요.

뭐 통과를 하게 되면 생성해둔 Process를 다시 동작시킵니다.



5. Conclusion

<Fig2>를 보면 아시겠지만 크롬은 최소 Process가 2개 입니다

하나는 부모 Process , 하나는 탭에 할당된 Process죠.

부모는 다른 Station에서 실행되고 있는 Process를 Control 하는 역할을 하게 되고

실제 페이지를 뿌려주는건 자식 Process 입니다.

만약, 3번 Check를 통과하지 못했다면 결과적으로 남는 것은 부모 Process 하나 뿐입니다.

이렇게 되면 페이지를 탐색할 자식 Process가 없는 꼴이 되니 정상적으로 실행 될 수 없다는 겁니다.

이해 되시나요?

물론 Plug in 이나 확장 프로그램도 모두 실행이 안되더군요.





[+] Solution



정리하자면

1. IAT Hooking을 거는 특정 프로그램을 종료시킨다.

2. [ 위 Hooking을 거는 Process가 사용자 권한일 경우에 한함 ] 크롬을 관리자 권한으로 실행시켜 Hooking을 못 걸게 한다.

3. 크롬에 --no-sandbox 옵션을 줘서 실행한다.



정도가 되겠습니다.

해당 문제 때문에 크롬을 못쓰는 분들이 해결 하시고 잘 사용하실 수 있길 기원합니다 :D


Posted by LinkC

2010.09.13 17:26 Web



I`m on a Chrome!

다른 브라우저들 족구해!

모두들 내 스피드를 보고 열폭하라고!



깔끔한 UI와 기존 브라우저들과 차별화를 둘 정도의 스피드를 가진

크롬이 인기 몰이 중에 있습니다

저도 크롬을 6개월 가까이 쓰고 있구요

속도면에선 정말 타의 추종을 불허하죠

이번에 공개된 7의 개발자 버전에서는 GPU가속이 사용되었다고 하며

--enable-gpu-plugin --enable-gpu-rendering --enable-accelerated-2d-canvas --enable-accelerated-compositing --enable-video-layering --enable-webgl --enable-fastback

을 대상 뒤에 붙이면 된다고 합니다


<그림1. 크롬 등록정보에서 GPU 가속을 쓰기 위해 수정 해야 할 부분>


설정해주시고 주소창에 about:memory 를 통해 확인하셔서

GPU 부분을 발견하셨다면 가속화가 제대로 이루어지고 있는 겁니다

<그림2. about:memory 를 치고 가속화가 이루고 지고 있는 것을 확인한 모습>


다만.. 플러그인들과 충돌이 일어나서

필자는 못써보고 있는 상황입니다 -.-

( 다른 브라우저에서도 가속화를 정식 준비하고 있는 단계입니다

IE는 오는 16일에 베타 버전을 발표할 예정이고, FireFox 4 에는 이미 탑재되어 베타 버전이 나와있습니다

어느 정도 안정화에 머무를 때 까지는 아마 주 웹 브라우저는 크롬이 지키고 있지 않을까 싶네요

IE는 안쓸레야 안쓸수가 없구요.. =,.= )



GPU 가속도 물론 탐나지만..

마우스 제스쳐 등이 없으면 불편해서 못쓰겠더라구요

정식 버전이 나오면 수정이 될 거라고 봅니다 :D

플러그인에서 버전 업데이트를 하던가 말이죠

이참에 제가 쓰고 있는 플러그인(확장 프로그램)을 소개할게요

1. Chrome Pig


IE의 알툴바의 기능에다가 정말 여러가지 기능을 한데 모아 놓은 플러그인입니다

마우스 제스처 때문에 설치하긴 했지만, 다른 기능들도 상당히 유용합니다 :D

https://chrome.google.com/extensions/detail/oiplkfaidhjklglajdpfehoagkmlcakh?hl=ko



2. Flash Block


자동으로 재생되는 플래시들을 방지하고 사용자가 보고자 하는 플래시만, 혹은 특정 사이트만

허용 할 수가 있습니다

로딩 시간의 상당부분을 잡아 먹는 플래시를 막는 건 속도 개선에 정말 좋겠죠?

또, 커뮤니티 사이트 등에 돌아다니는 악질 태그들 ( 말 안하셔도 할 거라고 생각합니다 :D ) 을 막는데도

탁월한 효과를 발휘하죠

https://chrome.google.com/extensions/detail/gofhjkjmkpinhpoiabjplobcaignabnl?hl=ko


3. AdBlock


광고 차단용 AdBlock 입니다

사이트에 시도 때도 없이 등장하는 광고들을 효과적으로 막을 수 있죠

페이지 소스에서 광고 코드를 catch 해서 아예 로딩이 안되게 하는 모양입니다

설치하셨으면 광고에 우클릭 하시고 bar를 조절하셔서 제거 하시면 됩니다

https://chrome.google.com/extensions/detail/gighmmpiobklfepjocnamgkkbiglidom?hl=ko




이 밖에 쓸만한 플러그인 알고 계시다면 알려주세요 :D

'Web' 카테고리의 다른 글

What is Tor?  (2) 2011.02.27
ASP.NET Padding Oracle Attack!  (2) 2010.10.13
I`m on a Chrome!  (0) 2010.09.13
웹브라우저의 춘추전국시대?  (0) 2010.09.13
Catching temporary I.E Files -IE 임시 파일 가로 채기  (5) 2010.08.24
Web Browser 제어 (IE [Internet Explorer])  (1) 2010.07.19
Posted by LinkC

2010.09.13 16:48 Web

 

<그림1. Google Chrome 개발자 버전의 사용 모습>

현재 가장 빠르다고 정평이 나 있는 크롬이 

7 버전에서 GPU가속을 꺼내들었습니다

여기서 얼마나 더 빨라 질지 모르겠네요

가장 많은 사용자를 차지하고 있지만 느린 속도 및 여러가지 이유로 

급속히 점유율이 줄어가는 IE에서도 이에 질세라  9 버전에서 GPU가속으로 맞불을 놨습니다

베타 버전은 오는 16일날 정식 공개 한다고 하는군요

MS에서도 현 상황을 충분히 파악하고 있을 거라고 생각합니다

크롬 7 이 이미 나온 시점에서 IE가 유저를 되찾을 수 있는 방법은

'속도의 우월함' 을 보이는 것이겠죠 

또한 , HTML5가 차세대 웹 표준의 기준점이 되면서 '웹 표준을 얼마나 지키느냐' 역시 이에 못지 않게 중요해졌습니다

그래서 GPU 가속을 채택했고, 아직 현 windows 사용자의 상당수를 차지하는 XP를 버리는 결정까지 내립니다

다른 브라우저에서는 XP를 지원하는데 IE 9 만 지원을 안하면 이것 나름대로 또 큰 변수가 될 지도 모르겠군요

아무튼 IE 7,8 이 웹 표준 점수에서 아주 형편 없는 점수를 받은 MS가 9 버전에서는

꽤 공을 들인것 같습니다

<그림2. IE9이 받은 웹 표준 점수>


크롬은 이미 100점을 받고 있지만요..

뭐 5점 정도고 베타 버전인 만큼 정식으로 나왔을 때는 모두 충족해서 나올 것이라 생각합니다

<그림3. 크롬의 웹 표준 준수 점수>

다음은 IE 9 의 동영상입니다

IE8에 비해 많이 깔끔해진게 맘에 드네요




이에 질세라 FireFox 4도 동영상을 공개했습니다



FireFox 역시 세계 점유율 2위를 차지하는 브라우저의 위엄을 보이며

크롬, IE 에 밀리지 않으며 경쟁에 참여하고 있습니다

유저들이 똑똑해져서 이제 더 이상 IE의 독주는 볼 수 없겠죠

바야흐로 춘추전국시대의 개막입니다




P.S 필자도 IE 9 에 큰 기대를 걸고 있습니다

우리나라 사정상 ActiveX 를 완전히 떼어버리는데는 정말 아주 오랜 시간이 걸릴 것 같고

그 때 까지는 IE를 쓸 수 밖에 없는데 느림보 8 을 타고 가자니 답답하더군요 :(

티스토리 또한 다른 브라우저는 그림 등의 리사이즈가 안되고 말이죠..

아무쪼록 MS에서 이번에는 정신차리고 힘좀 써줬으면 합니다


P.S 2  전에 웹 브라우저에 관한 포스팅을 한 적이 있었는데

이렇게 빨리 비슷한 주제로 포스팅 할 줄 몰랐네요

그만큼 웹 브라우저들끼리 경쟁이 가속화 되는 느낌이랄까요?


P.S 3 자신의 브라우저 속도 등을 테스트 하고 싶으시다면

http://ie.microsoft.com/testdrive/

에서 확인하시면 됩니다 :D




'Web' 카테고리의 다른 글

ASP.NET Padding Oracle Attack!  (2) 2010.10.13
I`m on a Chrome!  (0) 2010.09.13
웹브라우저의 춘추전국시대?  (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
Posted by LinkC

2010.05.28 10:36 Web

대표적인 웹 브라우저 라면,

IE, FF, Chrome , Safari 등등 여러가지가 있겠습니다만

요즘은 IE, FF, Chrome 세 Browser 가 가장 주목받고 있죠

세계 시장 점유율은 얼마나 될까요?

그래프 출처 : http://marketshare.hitslink.com/report.aspx?qprid=0&qpct=3




최근, 점유율이 계속 낮아지고 있다고 하지만 IE가 아직 건재하군요

파폭이 25%로 상당히 따라붙었습니다

크롬은 아직 7% 정도 밖에 안되지만

1년 사이에 5% 증가했다고 하니 , 괄목할 만한 성장이죠



OS 점유율입니다

92%를 차지 하고 있는 Windows 의 압승이로군요

이걸로 보면 IE가 60%를 차지 하고 있는건 그렇게 어려운 일도 아니었을 겁니다

IE가 독주하던 시대는 가고 있다 이거죠

사실 , 사용자 입장에서는 여러 경쟁사들이 붙는게 서비스 적으로 이득이기도 하구요

 그림 출처: http://internettrend.co.kr

이게 뭔고 하니

국내 웹 브라우저 점유율입니다

97% ...

압도적이네요 이건 뭐

Active X 폐해의 산물이죠

저도 FF나 , Chrome 등을 사용해보기도 했습니다만

IE Tab 을 모두 지원한다고는 하나 , Active X 를 지원하는 사이트 마다

그런다는게 정말 불편하더군요

우리나라에서도 이를 인지하고 있기는 한데

정작 고치려는 움직임은 크게 보이지 않습니다

은행 거래 한번 하려면 수십개씩 프로그램 깔고

그 취약하다는 Active X 깔아가며..

아이러니 하게도 이게 좋지 않다는건 사용자들이 더 잘 인지하고 있죠

그 예가 바로 OpenWeb 이고..

Active X 만 개선하면 이 문제는 해결될거라고 하지만

제 생각엔 적어도 5년은 있어야 Active X 를 몰아낼 수 있지 않을까 싶습니다

그렇게 되면, IE  + 타브라우저가 아닌

다른 브라우저를 독립적으로 사용할 수도 있겠고,  저 비 정상적인 점유율도 변화되겠죠


이야기가 다른데로 샜는데...

아무튼 웹 브라우저의 경쟁이 가속화되면서

각 브라우저들은 자신들만의 특징을 내세우기 시작했습니다

모든 브라우저들이 기본적으로 속도를 가장 중시하긴 합니다만..

현재 브라우저계의 우사인 볼트는 바로 크롬이죠





그래프 출처: http://cache.gawkerassets.com/

크롬이 빠르긴 빠르네요 정말




크롬 속도에 관한 재밌는 동영상이 하나 있군요 :D

Chrome VS Potato

크롬과 감자의 대결입니다

또, 크롬의 경우 Pwn2Own 대회에서 최후의 승자로 남기도 했죠

http://www.downloadsquad.com/2010/03/25/pwn2own-2010-google-chrome-is-the-last-man-standing/

물론, 크롬의 이용자가 상대적으로 적어 취약점에 관심이 비교적 적었을 지도 모르지만요



크롬 외에 다른 브라우저들도 분명 그들만의 특성등을 가지고 있겠죠

예를 들면 파폭은 플러그인 이랄까요?


아무튼 , 이걸 비교하고 선택하시는건 여러분 몫입니다 :)

당신은 어떤 브라우저를 쓰고 계시나요?




'Web' 카테고리의 다른 글

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
Damm Vulnerable Web App!  (0) 2009.11.15
Posted by LinkC
이전버튼 1 이전버튼

블로그 이미지
LinkC

태그목록

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

공지사항

Yesterday32
Today19
Total315,771

달력

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

최근에 받은 트랙백

글 보관함


. .