보안연구원으로 알려진 Yunus Çadırcı (https://twitter.com/yunuscadirci) 이 2019년 11월에 발견
스마트 기기 대부분에 포함된 프로토콜 모음인 UPnP(Universal Plug and Play)에 영향을 끼침
UPnP 기능 - 로컬 내트워크 내 기기들이 데이터 교환, 구성, 동기화 등의 작업을 위해 서로를 확인하고 연결할 수 있도록 함
대응방안
1 . (제조사별 패치가 있는지 확인 후 패치)
2. (주요 제조사의 패치가 공개될 때까지 하단 내용 적용)
o 통신업체(ISP)
- DSL/Cable 라우터의 UPnP 스택 확인 및 장비 취약점에 영향 여부를 제조사 통해 확인
- 알려진 UPnP 포트 차단
o 개인 사용자
- 인터넷에 UPnP를 사용하는 장치 연결 해제
o 기업 보안 담당자
1. 인터넷에 직접 연결된 장치
- 사용하지 않는 UPnP Port 비활성화(Port Scanner 사용하여 UPnP port 확인)
2. 보안 장비
- 모든 SUBSCRIBE 및 NOTIFY HTTP 패킷 차단(Ingress/Egress)
- DDoS 보호 기능 활성화
3. 내부 인터넷망
- IP 카메라, 프린터, 라우터 등의 장치에서 사용하지 않는 UPnP 서비스 비활성화
4. DMZ & 서버 운영 구간
- UPnP가 사용되는 장치를 해당 구간에 배치하지 않기
- 미디어 서비스를 운영 중인 서버는 사용하지 않는 경우 모든 SUBSCRIBE 및 NOTIFY HTTP 패킷 차단(Ingress/Egress)
1. 취약점 설명
공격자가 원격 기기에 UPnP의 구독 기능에 잘못된 callback 헤더값을 포함하는 TCP 패킷을 보낼 수 있다고 밝혔습니다.
이 잘못된 헤더는 보안 카메라, DVR, 프린터, 라우터 등 UPnP 프로토콜을 지원하며 인터넷에 연결된 채 노출된 상태인 모든 스마트 기기에서 악용될 수 있습니다.
CallStranger 공격에서 해커는 기기의 인터넷에 연결된 인터페이스 부분을 노리지만 일반적으로 LAN 안의 내부 포트에서만 실행되는 기기의 UPnP 기능에서 코드를 실행합니다.
Çadirci는 공격자가 CallStranger 취약점를 통해 네트워크 보안 솔루션과 방화벽을 성공적으로 우회하여 회사의 내부 네트워크를 스캔할 수 있다고 밝혔습니다.
그는 공격자가 인터넷에서 접근 가능한 UPnP 활성화 기기에서 TCP 트래픽을 반송 및 증폭시킬 수 있는 DDoS 공격, 데이터 공격 또한 가능할 수 있다고 설명
2. POC 실습 확인
POC 코드는 https://github.com/yunuscadirci/CallStranger 에서 다운로드가 가능함
먼저 사이트에 접속하면 유의해야할 부분 파일 중에 CallStranger.php 파일에 있는 설명부분입니다.
** PHP로 된 본인 서버가 있어야 합니다. **
파일을 다운로드 후에 압축을 풀어 주시고
requirements.txt 파일에서 필요한 모듈을 설치하고
$pip install -r requirements.txt
다음 setup.py 파일 인스톨 해준다
sudo python3 setup.py install
그 다음 처음 언급했던 CallStranger.php 파일을 서버에 업로드 해 주시고
이제 취약한 uPnP 프로토콜이 돌아가는 서버를 구동시키고
CallStranger.py 를 실행해 봅니다. 아래와같이 서비스들이 확인됩니다.
그 이후에 취약한 서비스 여부를 계속 확인할 건지 Yes
테스트가 진행되고
다음과 같이 결과가 나옵니다
다음과 같이 정상적으로 스캔을 진행하려면 코드를 약간 수정해줘야 합니다. CallStranger.py 에서 PHP 파일을 올린 서버의 주소로 바꿔줘야 한다.
2. 추가 DoS 공격
추가로 코드를 수정하여 DoS 공격을 시도해 보았다
취약한 서버에서 특정 대상으로 Header 에 대량 데이터를 포함한 Dos 공격 시도
Header에서 대량의 데이터 삽입 공격 확인
이렇듯 취약한 프로토콜을 이용하여 다양한 공격을 시도해 볼 수 있을것 같습니다.
댓글