49
iOS MobileSafari Fuzzer 제작 Fuzzing namdaehyeon

[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Embed Size (px)

Citation preview

Page 1: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

iOS MobileSafari Fuzzer 제작 및 Fuzzing

namdaehyeon

Page 2: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

WHO AM I

•Mobile����������� ������������������  (은행,카드,증권,게임사,대기업,����������� ������������������  강의등)����������� ������������������  

•모바일환경,����������� ������������������  IoT,����������� ������������������  Source����������� ������������������  Auditing����������� ������������������  

•머신러닝����������� ������������������  (장효영군에게����������� ������������������  감사를)����������� ������������������  

•좋은분들����������� ������������������  덕분에����������� ������������������  책도����������� ������������������  한권����������� ������������������  썼습니다.����������� ������������������  

•이자리를����������� ������������������  빌려����������� ������������������  다시한번����������� ������������������  감사드립니다.����������� ������������������  

•영어를����������� ������������������  잘하고����������� ������������������  싶어����������� ������������������  매일����������� ������������������  전화영어����������� ������������������  25분씩하고����������� ������������������  있는..

Page 3: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

발표순서

Fuzzer 제작 Fuzzing결심

1. 시도 -> 실패

2. 시도 -> 실패

Page 4: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

목표(Goal)

•나만의����������� ������������������  MobileSafari����������� ������������������  Fuzzer를����������� ������������������  만들어보자.����������� ������������������  

•24시간����������� ������������������  7일.����������� ������������������  스스로����������� ������������������  돌도록����������� ������������������  만들자.

Page 5: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Goal

•나만의����������� ������������������  MobileSafari����������� ������������������  Fuzzer를����������� ������������������  만들어보자.����������� ������������������  

•JavaScript를����������� ������������������  이용하지����������� ������������������  말자����������� ������������������  

•Server����������� ������������������  &����������� ������������������  Client����������� ������������������  구조����������� ������������������  

•MobileSafari����������� ������������������  스스로����������� ������������������  Refresh����������� ������������������  가능할것����������� ������������������  or����������� ������������������  

•MobileSafari����������� ������������������  URL����������� ������������������  입력����������� ������������������  ->����������� ������������������  이동����������� ������������������  

•24시간����������� ������������������  7일.����������� ������������������  스스로����������� ������������������  돌도록����������� ������������������  만들자����������� ������������������  

•Low����������� ������������������  Memory,����������� ������������������  Fuzzing중����������� ������������������  Crash후����������� ������������������  재실행할것����������� ������������������  

•실행되었더라도����������� ������������������  ASLR인����������� ������������������  iOS에서����������� ������������������  어떻게����������� ������������������  객체����������� ������������������  주소를����������� ������������������  알����������� ������������������  ����������� ������������������  

����������� ������������������  ����������� ������������������   ����������� ������������������  ����������� ������������������  아서����������� ������������������  객체에����������� ������������������  메시지를����������� ������������������  보낼것인가?����������� ������������������  

•예외처리����������� ������������������  필요(NSAlertDialog)

Page 6: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

발표순서

Fuzzer 제작 Fuzzing결심

1. 시도 -> 실패

2. 시도 -> 실패

Page 7: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•필요조건����������� ������������������  

•Server-Client구조를����������� ������������������  이용

Page 8: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•필요조건����������� ������������������  

•반복적으로����������� ������������������  Refresh����������� ������������������  

•BrowserController����������� ������������������  Class����������� ������������������  ����������� ������������������  

•_initSubview:����������� ������������������  

•reloadFromAddressView:

1

2

Page 9: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•성공!!����������� ������������������  

•같은����������� ������������������  주소����������� ������������������  반복적으로����������� ������������������  Refresh����������� ������������������  가능.����������� ������������������  but����������� ������������������  .����������� ������������������  .����������� ������������������  .����������� ������������������  ����������� ������������������  

•Crash발생시����������� ������������������  PoC확인����������� ������������������  어려움

Page 10: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•필요조건����������� ������������������  1����������� ������������������  

•URL을����������� ������������������  변경하여야����������� ������������������  함.����������� ������������������  

•변경한����������� ������������������  URL로����������� ������������������  이동하도록����������� ������������������  메시지를����������� ������������������  보내야한다.����������� ������������������  

•AddressTextField����������� ������������������  Object����������� ������������������  

•AddressView����������� ������������������  Class����������� ������������������  

•필요조건����������� ������������������  2����������� ������������������  

•iOS����������� ������������������  ASLR����������� ������������������  극복해야만한다..����������� ������������������  

•ASLR(Address����������� ������������������  Space����������� ������������������  Layout����������� ������������������  Randomization)

Page 11: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자•iOS����������� ������������������  ASLR����������� ������������������  

•iOS����������� ������������������  4.3����������� ������������������  Default.����������� ������������������  

•PIE����������� ������������������  (Position����������� ������������������  Independent����������� ������������������  Executables)

Page 12: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자•iOS����������� ������������������  ASLR����������� ������������������  

•iOS����������� ������������������  4.3����������� ������������������  Default.����������� ������������������  

•PIE����������� ������������������  (Position����������� ������������������  Independent����������� ������������������  Executables)

Page 13: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자•iOS����������� ������������������  ASLR����������� ������������������  

•iOS����������� ������������������  4.3����������� ������������������  Default.����������� ������������������  

•PIE����������� ������������������  (Position����������� ������������������  Independent����������� ������������������  Executables)

Page 14: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자•Bypass����������� ������������������  iOS����������� ������������������  ASLR����������� ������������������  

•앱이����������� ������������������  실행될때마다����������� ������������������  객체의����������� ������������������  주소는����������� ������������������  항상����������� ������������������  변한다..����������� ������������������  

•객체에����������� ������������������  메시지를����������� ������������������  보내어����������� ������������������  특정����������� ������������������  기능을����������� ������������������  할����������� ������������������  수����������� ������������������  있음.����������� ������������������  

•이����������� ������������������  객체를����������� ������������������  직접����������� ������������������  가져다����������� ������������������  쓸수만����������� ������������������  있다면…⋯

Carrier 12:00 PM

Page Title

http://www.domain.com Google

Page 15: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•Bypass����������� ������������������  iOS����������� ������������������  ASLR����������� ������������������  

•AddressView����������� ������������������  Class

Page 16: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•Bypass����������� ������������������  iOS����������� ������������������  ASLR����������� ������������������  

•AddressTextField����������� ������������������  Object

Page 17: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•Bypass����������� ������������������  iOS����������� ������������������  ASLR����������� ������������������  

•객체의����������� ������������������  index는����������� ������������������  고정이다.

Carrier 12:00 PM

Page Title

http://www.domain.com Google

Page 18: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•객체����������� ������������������  Hirarchy

UIApplication KeyWindow

objectAtIndex:0

objectAtIndex:0

objectAtIndex:0

objectAtIndex:0

objectAtIndex:1

objectAtIndex:2

Page 19: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•객체����������� ������������������  Hirarchy

UIApplication KeyWindow

objectAtIndex:0

objectAtIndex:0

objectAtIndex:0

objectAtIndex:0

objectAtIndex:1

objectAtIndex:2

UIApp.keyWindow .subviews [0] .subviews [0] .subviews [2]

Page 20: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Carrier 12:00 PM

Page Title

http://www.domain.com Google

JavaScript를 이용하지 말자

•객체����������� ������������������  Hirarchy

var kTmpObject = new Instance(0x14100)

0x14100 MobileSafariWindow

0x14200 UITransitionView

0x14300 UIView

0x14400 UIToolbarButton

0x14500 UISwappableImageView

0x14600 TablToolbarButton

Page 21: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Carrier 12:00 PM

Page Title

http://www.domain.com Google

JavaScript를 이용하지 말자

•객체����������� ������������������  Hirarchy

var kAA = new Instance( )0x14100 MobileSafariWindow

0x14100 MobileSafariWindow

0x14200 UITransitionView

0x14300 UIView

0x14400 UIToolbarButton

0x14500 UISwappableImageView

0x14600 TablToolbarButton

Page 22: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•객체����������� ������������������  가져오기����������� ������������������  

•gdb,����������� ������������������  cycript����������� ������������������  

•po����������� ������������������  [[UIApplication����������� ������������������  sharedApplication]����������� ������������������  .����������� ������������������  .����������� ������������������  .

cy# var kAddressView = new Instance(UIApp.keyWindow .subviews [0].subviews [0].subviews [2]) #"<AddressView: 0x2d3ce0; frame = (0 0; 320 60); clipsToBounds = YES; layer = <CALayer: 0x2d3e40>>" cy#

subview index

Page 23: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•이렇게����������� ������������������  얻은����������� ������������������  객체에����������� ������������������  ����������� ������������������  Message보내기

//iPhone 4 iOS 5.1.1 function Fuzzing(URL) {

var kAddressView = new Instance (UIApp.keyWindow.subviews[0].subviews[0].subviews[2]); var kAddressTextField = new Instance (UIApp.keyWindow.subviews[0].subviews[0].subviews[2]. subviews[2].subviews[0]); [kAddressTextField setText:URL]; [kAddressView goToURL]; }

Page 24: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•이렇게����������� ������������������  얻은����������� ������������������  객체에����������� ������������������  ����������� ������������������  Message보내기

//iPod Touch 4th iOS 6.1.6 function Fuzzing(URL) {

var kAddressView = new Instance (UIApp.keyWindow.subviews[0].subviews[0].subviews[2]); var kAddressTextField = new Instance (UIApp.keyWindow.subviews[0].subviews[0].subviews[2] .subviews[0].subviews[1].subviews[2]; [kAddressTextField setText:URL]; [kAddressView goToURL];

}

Page 25: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

JavaScript를 이용하지 말자

•객체����������� ������������������  주소가����������� ������������������  아닌����������� ������������������  index를����������� ������������������  가져와서����������� ������������������  메시지����������� ������������������  보내기����������� ������������������  DEMO

Page 26: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•필요조건����������� ������������������  3����������� ������������������  

•때때로����������� ������������������  잘못����������� ������������������  처리된����������� ������������������  결과에����������� ������������������  대한����������� ������������������  대비책이����������� ������������������  있어야����������� ������������������  한다.����������� ������������������  

•URL����������� ������������������  처리하지����������� ������������������  못했을때����������� ������������������  AlertDialog나타남����������� ������������������  

•생성되는����������� ������������������  AlertDialog핸들링을����������� ������������������  못하면����������� ������������������  Fuzzer����������� ������������������  Crash

Page 27: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•AlertDialog����������� ������������������  Handling

Carrier 12:00 PM

Page Title

http://www.domain.com Google

0x14100 UIAlertView

if ( objectAtIndex:0 == isKindofClass:[UIAlertView class]) { [KILL UIAlertView];}

Page 28: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•필요조건����������� ������������������  4����������� ������������������  

•MobileSafari����������� ������������������  재실행����������� ������������������  

•이미����������� ������������������  설치되어����������� ������������������  있는����������� ������������������  System����������� ������������������  APP����������� ������������������  이용����������� ������������������  

•매����������� ������������������  30초마다����������� ������������������  “MobileSafari”가����������� ������������������  실행중인지����������� ������������������  Check����������� ������������������  

•“MobileSafari”가����������� ������������������  없다면…⋯����������� ������������������  Safari실행…⋯

NSTimer

Safari Check

Page 29: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

•MobileSafari����������� ������������������  재실행����������� ������������������  

•NSTimer����������� ������������������  삽입.����������� ������������������  

•MobileSafari����������� ������������������  프로세스����������� ������������������  확인����������� ������������������  메소드����������� ������������������  구현.

NSTimer

Safari Check

Hook

24시간 7일. 스스로 돌도록 만들자

Page 30: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

NSTimer

Safari Check

Fail

•MobileSafari����������� ������������������  재실행����������� ������������������  

•이미����������� ������������������  설치되어����������� ������������������  있는����������� ������������������  System����������� ������������������  APP����������� ������������������  이용����������� ������������������  

•매����������� ������������������  30초마다����������� ������������������  “MobileSafari”가����������� ������������������  실행중인지����������� ������������������  Check����������� ������������������  

•“MobileSafari”가����������� ������������������  없다면…⋯����������� ������������������  Safari실행…⋯

Page 31: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•실패의����������� ������������������  원인:����������� ������������������  백그라운드����������� ������������������  

•Backgound진입시����������� ������������������  MobileSafari에����������� ������������������  영향을����������� ������������������  주지����������� ������������������  않음.����������� ������������������  

•일정����������� ������������������  시간이����������� ������������������  지나면����������� ������������������  MobileNote,����������� ������������������  MobileSafari����������� ������������������  Timer����������� ������������������  ����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  모두����������� ������������������  미작동

NSTimer

Safari Check

NSTimer

Safari Fuzzing

Page 32: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•MobileSafari����������� ������������������  실행����������� ������������������  (다른방법����������� ������������������  시도)����������� ������������������  

•현재����������� ������������������  탈옥(jailbreak)환경에서����������� ������������������  MobileSafari����������� ������������������  Check구현����������� ������������������  

•Console형태의����������� ������������������  어플리케이션을����������� ������������������  만들어서����������� ������������������  해보자.����������� ������������������  

•MobileNote.app을����������� ������������������  이용한����������� ������������������  방법과����������� ������������������  같음.

NSTimer

Safari Check

Page 33: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•MobileSafari����������� ������������������  실행����������� ������������������  (다른방법����������� ������������������  시도)����������� ������������������  

•현재����������� ������������������  탈옥(jailbreak)환경에서����������� ������������������  MobileSafari����������� ������������������  Check구현����������� ������������������  

•Console형태의����������� ������������������  어플리케이션을����������� ������������������  만들어서����������� ������������������  해보자.����������� ������������������  

•MobileNote.app을����������� ������������������  이용한����������� ������������������  방법과����������� ������������������  같음.

Page 34: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•Console형태의����������� ������������������  어플리케이션����������� ������������������  

•[[UIApplication����������� ������������������  sharedApplication����������� ������������������  openURL:]

MobileSafari실행����������� ������������������  안됨

Fail

Page 35: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

•Console형태의����������� ������������������  어플리케이션

MobileSafari실행됨!

Success

Page 36: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

Hooking Module

1. WebServer에서 환경설정 파일을 읽어들여 MobileSafari Checking

1. Timer

2. WebServer에서 설정파일을 읽어들여 Fuzzing URL 기본 틀구성

3. Safari환경설정에 저장한 마지막 설정을 읽어들여 Fuzzing URL완성

4. URL Refresh완성

5. goToURL 메시지 전송 (Fuzzing시작)

1

2

34

Page 37: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

24시간 7일. 스스로 돌도록 만들자

DEMO

Page 38: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

발표순서

Fuzzer 제작 Fuzzing결심

1. 시도 -> 실패

2. 시도 -> 실패

Page 39: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

iOS MobileSafari Fuzzing

Page 40: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

•CFURL����������� ������������������  Null����������� ������������������  Pointer����������� ������������������  Dereference����������� ������������������  

•Opera����������� ������������������  Coast����������� ������������������  

•URL처리함수인����������� ������������������  CFURL����������� ������������������  *함수의����������� ������������������  부적절한사용����������� ������������������  

•[NSURL����������� ������������������  URLWithString:@“http://example.com/%”];����������� ������������������  

•CFURLCreateWithString(kCFAllocatorDefault,����������� ������������������  CFSTR����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  (“http://example.com/%”),����������� ������������������  NULL);����������� ������������������  ==����������� ������������������  >����������� ������������������  NULL����������� ������������������  

•CFURLCopyAbsoluteURL(url);����������� ������������������  

•=>����������� ������������������  NULL����������� ������������������  pointer����������� ������������������  derefrence����������� ������������������  

•From����������� ������������������  D2T2-Exploring-and-Exploiting-iOS-Web-Browsers

Page 41: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

Page 42: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

•CFURL����������� ������������������  Null����������� ������������������  Pointer����������� ������������������  Dereference����������� ������������������  

•Opera����������� ������������������  Coast����������� ������������������  

•URL처리함수인����������� ������������������  CFURL����������� ������������������  *함수의����������� ������������������  부적절한사용����������� ������������������  

•[NSURL����������� ������������������  URLWithString:@“http://example.com/%”];����������� ������������������  

•CFURLCreateWithString(kCFAllocatorDefault,����������� ������������������  CFSTR����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  (“http://example.com/%”),����������� ������������������  NULL);����������� ������������������  ==����������� ������������������  >����������� ������������������  NULL����������� ������������������  

•CFURLCopyAbsoluteURL(url);����������� ������������������  

•=>����������� ������������������  NULL����������� ������������������  pointer����������� ������������������  derefrence����������� ������������������  

•From����������� ������������������  D2T2-Exploring-and-Exploiting-iOS-Web-Browsers

No Crash

Page 43: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

xlog_width > 10000

xlog_height > 10000

Page 44: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

Page 45: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

xlog_width < 10000

xlog_height < 10000

Page 46: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

DEMO

Page 47: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Fuzzing

Page 48: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

Question

?감사합니다

Page 49: [2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing

References

• Exploring-and-Exploiting-iOS-Web-Browsers, PDF

• https://developer.mozilla.org/ko/docs/Gecko_DOM_Reference

• http://quirksmode.org/dom/core/