보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

Network Printer Hacking

2018.09.05

10,022

 

서비스사업본부 보안분석팀 김미희

 

 

1. 개요

 

초연결과 초지능을 특징으로 하는 제4차 산업혁명은 기존 산업혁명에 비해 더 넓은 범위에 더 빠른 속도로 새로운 시대를 이끌고 있다. ‘4차 산업혁명’의 결과 중 특히 눈에 띄는 변화로 볼 수 있는 것은 모든 사물이 인터넷과 결합되는 사물인터넷(Internet of Things, 이하 IoT)을 들 수 있다. 사물인터넷의 발전은 PC나 모바일에서 발생될 수 있던 사이버 보안위협 요인들이 사물로 이동한 것을 의미할 수 있다.

 

2015년 싱가포르의 연구진이 고층 건물 내에 있는 와이파이(Wi-Fi) 탑재형 프린터기를 드론을 이용하여 해킹하는데 성공하였으며, 2016년 8100만 달러의 피해가 발생한 방글라데시 중앙은행의 국제은행간통신협약(SWIFT, 이하 스위프트) 전산시스템 해킹사고에서도 프린터기가 해킹되었다. 스위프트는 거래 확인을 위해 메시지를 생성하고 이를 프린터를 통해 자동 출력하기 때문에 프린터기의 해킹이 필요하다. 결국 스위프트 메시지를 가로채 조작된 메시지가 전송되어 해커들의 공격 흔적이 출력되지 않아 해킹사실을 인지하기 어렵게 하였다.

 

앞선 사례들처럼 프린터기는 기존의 프린터 기능  이외에도 팩스, 스캔 등 다양한 기능들과 결합하면서 기관이나 기업 내 중요 정보를 출력 및 전송하는 기능을 가지고 있음에도 불구하고 그 중요성에 대해서 간과되는 경우가 많다. 따라서 이번 호에서는 프린터기를 통해 발생할 수 있는 보안위협과 보안위협을 대응하기 위한 대응방안에 대해서 생각해 보고자 한다.

 

 

2. Printer의 구조

 

프린터를 해킹하기 위해서는 기본적으로 프린터기의 구조에 대해서 알아야 한다. 프린터기는 크게 Printing Channel과 Printer Language로 구성되어 있다.

 

Printing Channel은 프린터에서 출력할 수 있는 데이터를 전송할 수 있는 전송매체를 의미한다. 인쇄 할 실제 데이터를 배포하는 채널로 사용하는 LPD(Line Printer Daemon)나 IPP(Internet Printing Protocol), 9100/TCP 포트를 사용하여 PJL(Printer Job Language), PostScript 등에 직접 접근이 가능한 Raw등이 Printing Channel을 구성하는 대표적인 Network printing protocols라고 할 수 있다.

 

Printer Language는 프린터의 출력용지나 작업 등을 제어하는 Printer Control Languages와 실제 문서의 양식을 지정하는 Page Description Languages로 구성되어 있다. Printer Control Languages는 프린터 언어 스위칭, 작업 분리, 환경 명령 등에 사용되는 PJL(Printer Job Language)과 기본적으로 SNMP의 기능과 PJL을 결합하여 사용되는 PML(Printer Management Language)가 있다.

 

 

 [그림 1] 프린터의 구조

 

 

3. Printer Hacking

 

프린터 해킹기술로는 서비스 거부(Denial of Service), 권한 상승(Privilege Escalation), 인쇄 작업 접근(Print job access), 정보 공개(Information Disclosure), 코드 실행(Code Executions)등이 있다. 이 중에서 서비스 거부 공격과 권한 상승의 공격에 대해서 상세하게 살펴보자.

 

1) 서비스 거부(Denial of Service)

 

서비스 거부공격은 프린터의 인쇄작업이 병렬처리가 아닌 직렬처리로 한 번에 하나의 작업만 처리가 가능하다는 점을 이용한 공격이다. 프린터에 높은 Timeout값을 설정하게 되면 공격효과가 높아지게 되고 이를 통해 높은 Timeout값의 작업이 프린터를 점유하게 하여 다음 작업을 처리되지 못하도록 한다.

 

[그림 2]와 같이 프린터 해킹에 사용되는 PRET도구를 사용하여 현재 프린터의 Timeout값을 확인 한 후 [그림 5-3]과 같이 무한루프 구문을 통해서 프린터기의 작업을 점유하게 하는 방식이다.

 

 

 

[그림 2] PRET를 이용한 프린터의 Timeout값 추출

 

 

 

[그림 3] Timeout값을 이용하여 무한루프를 통해 서비스 거부 공격 시도

 

 

2) 권한 상승(Privilege Escalation)

 

프린터의 권한을 상승하는 가장 대표적인 방법은 Factory defaults인 공장 초기화 방식이다. 프린터의 공장초기화는 일반적으로 프린터의 특수 키 조합 등을 통해서 물리적으로 설정하는 방법이 있으나 SNMP, PML/PJL, PostScript등을 통해서도 제어가 가능하다.

 

SNMP를 이용하여 공장 초기화를 하기 위해서는 디바이스가 하드웨어와 연관되는지 또는 소프트웨어와 연관되는지 여부에 관계없이 특정 디바이스를 관리하는데 사용되는 Printer-MIB(Management Information Base)인 prtGeneralReset Object (OID 1.3.6.1.2.1.43.5.1.1.3.1)값을 이용한다. 이 방식을 이용하게 되면 DHCP가 아닌 고정IP를 사용하는 경우 해당 기기의 설정이 삭제되어 추가적인 접근이 불가능하게 되지만 프린터에 적용되어 있는 보호기능 우회가 가능하게 된다.

 

SNMP를 이용하여 조작하기 위해서는 특정 인스턴트 값을 설정할 때 사용하는 ‘snmpset’명령어를 이용한다.  ‘snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6’과 같이 명령어를 입력하면 SNMP를 이용, 장치 재시작 후 공장 초기화 값으로 복원하게 된다. 명령어에서 1.3.6.1.2.1.43.5.1.1.3.1은 prtGeneralReset Object의 OID를 의미하며 6은 esetToFactoryDefaults(6)을 의미한다.

 

 

 

[그림 4] Pinter-MIB(1.3.6.1.2.1.43.5.1.1)조회 결과

 

 

4. PRET(Printer Exploitation Toolkit)

 

프린터 해킹은 서비스 거부나 권한 상승 등의 기술을 통해서 접근 할 수 있다. 이보다 좀더 손쉽게 프린터 해킹을 하기 위해서는 공개되어 있는 해킹도구를 사용하는 방법이 있다. 프린터 해킹에 사용되는 공격도구는 PRET, Praeda, PFT, BeEF 등이 있다. 우리는 그 중에서 독일 보훔 루르 대학(Ruhr-Universität Bochum)의 연구팀이 발표한 ‘Exploiting Network Printers’논문에서 제시하고 있는 PRET(Printer Exploitation Toolkit, 이하 PRET)이라는 소프트웨어를 소개하고자 한다.

 

‘Exploiting Network Printers’에서는 HP, Brother, Lexmark, Dell, Kyocera, Samsung, Konica, OKI 등 20종의 프린터를 분석하여 Printer내에서 동작하는 Printing Channel과 Printer Language를 통해 공격을 입력 받을 수 있는 전송경로와 공격명령을 실행 받을 수 있는 수행주체에서 실행 가능한 공격도구를 공개하였다.

 

 

 

[그림 5] 프린트 해킹 구조

 

 

PRET를 이용하면 일반적으로 사용되는 명령어와 비슷하게 ls, get, put, delete 등을 입력하면 PRET에서 PJL이나 PostScript로 변환하여 프린터에 전송하게 되고 응답결과를 다시 변환하여 사용자에게 출력해주는 구조를 가지고 있다.

 

 

 

[그림 6] PRET 동작 구조

 

 

PRET를 사용하여 Print Job Manipulation(Content Overlay, Content replacement)와 Information Disclosure(Memory Access, File System Access, Print Job Capture, Credential Disclosure)이 가능하다.

 

 

 

[그림 7] PRET에서 지원하는 프린터 종류 및 획득 정보 목록

 

 

PRET를 사용하여 실제 Print Job Manipulation이나 Information Disclosure가 가능한지 확인하기 위해서 [그림 8]과 같이 동일 네트워크 대역에 있는 프린터기의 시리얼넘버(Serial Number)를 확인해 보고자 한다.

 

 


[그림 8] PRET도구를 사용하기 위한 환경구성

 

 

 

테스트 결과 2종의 프린터기가 PRET를 통해서 정상적으로 시스템 정보가 출력 되는 것이 확인 된다. 

 

 

[그림 9] PRET도구를 이용하여 프린터기 정보(Serial Number) 확인결과

 

 

PRET는 서버, 네트워크 장비, 관리자용 서비스, 산업용 제어시스템(SCADA), 인터넷 전화, 화상 기기(CCTV) 등의 정보를 제공하는 쇼단(Shodan)이나 줌아이(ZoomEye)등의 검색엔진과 결합하게 되면 효과는 더욱 극대화 된다. [그림 10]과 같이 ‘Exploiting Network Printers’논문을 통해 취약점이 발견된 프린터 기종 중에서 검색하면 해당 프린터의 정보를 확인할 수 있다.

 

 

 

[그림 10] 검색엔진 ZoomEye를 이용한 공격대상 검색결과

 

 

5. 결론

 

지금까지 간단하게 프린터 해킹방법에 대해서 살펴보았다. 프린터는 스캔, 팩스 등 다양한 중요정보의 취급 대상임에도 불구하고 타 시스템에 비해서 상대적으로 취약한 보안수준을 유지하고 있는 경우가 빈번하다.

 

2017년 Stackoverflowin라는 닉네임을 사용하는 해커가 외부 인터넷에서 노출된 프린터를 대상으로 IPP포트와 LPD포트, 9100포트를 이용하여 ASCII로 묘사된 로봇과 해커의 이메일 주소, 해킹에 사용된 포트를 닫으라는 경고문을 출력한 사고가 있었다. 해킹사고에 대상이 된 것은 대부분의 프린터 사용자들이 그대로 사용하는 기본 설정과 포트로 인해 발생된 사고였다.

 

프린터 해킹의 상당수는 ▲프린터 IP설정 시 공인IP대신 사설IP 설정하기, ▲ 방화벽에서 프린터 기본 포트(9100/TCP) 외부접근 차단, ▲ 허용된 사용자 IP만 프린터 사용이 가능하도록 방화벽 및 프린터 권한 설정 강화 등 기본적인 보안 수칙의 준수만으로도 충분히 안전하게 사용이 가능하다.

 

따라서 프린터 해킹을 예방하기 위해서는 프린터와 같이 네트워크로 연결되어 있는 모든 디바이스의 기본동작에만 집중하는 것이 아니라 최소한의 보안설정에 대해 고민을 한다면 프린터로 인한 보안사고는 사전에 예방할 수 있을 것이다.

 

 

6. 참고자료

 

[1] Wiki - Hacking Printer

https://hacking-printers.net/wiki/index.php/Main_Page

[2] PRET(Printer Exploitation Toolkit)

https://github.com/RUB-NDS/PRET

[3] SoK: Exploiting Network Printers

https://www.nds.rub.de/media/ei/veroeffentlichungen/2017/02/28/printer-security.pdf