Pwnable and Exploitation

저희 연구실에서는 다양한 시스템에 대한 Offensive Security 연구를 수행하고 있습니다. 다음은 CVE-2018-5200 RCE 취약점의 Exploitation (pwn) Proof-of-Concept 데모 영상입니다. 이러한 RCE 취약점을 공격하는 과정에서 여러가지 시스템 지식 및 익스플로잇 기술을 터득 할 수 있습니다. 예를들어 KMPlayer CVE-2018-5200 의 취약점을 통해 최종 RCE 까지의 Exploit 흐름을 이끌어내는 과정은 메모리 취약점에 대한 이해 뿐만 아니라 파일 및 프로세스의 메모리 구조, 힙 레이아웃 제어방법 및 힙 스프레이 방법론, 운영체제/아키텍쳐별 쉘코드 작성방법 등에 관한 다양한 연구를 동반하게 됩니다. 또한, Windows/Linux 커널 등 운영체제 의 코드에 취약점이 있는 경우 이를 악용하여 LPE (루팅 등) 를 하거나, Sandbox 와 같은 보안장치를 무력화 할 수 있습니다. 이러한 버그들은 주로 힙 메모리에서의 Overflow, Use-After-Free 와 같은 메모리 취약점, Race Condition 취약점 등으로 인해 발생할 수 있는데, 이러한 버그를 RCE 까지 이끌어내는 과정에서는 상당한 Reverse Engineering (역공학) 이 필요합니다. 메모리 구조 이해, 어셈블리 분석, 디버거의 활용 등도 중요하지만 무엇보다도 프로그래밍 및 소프트웨어 개발에 관한 다양한 경험이 필요합니다. 기본적으로 저희 연구실에서 수행하는 모든 Offensive Security 연구는 프로그래밍과 소프트웨어 개발능력을 기반으로 합니다.




Drone System Security

기존의 해킹, 사이버 보안 위협 등 대부분의 정보보안 이슈는 PC 및 서버 정도에서의 메모리 취약점 및 악성코드 유포에 집중되었으나, 최근 ICT 산업이 다양한 분야로 확대되면서 더욱 새로운 시스템들에서 새로운 보안 문제들이 생겨나고 있습니다. 저희 연구실에서는 드론 시스템에 대한 분석 및 취약성에 대한 연구를 수행합니다.

그림에서 묘사되는 바와 같이, 드론시스템은 단순하게 하나의 소프트웨어와 하드웨어로 구성된 전통적인 시스템이 아니라 지상관제국, 차량, 무선통신 등 다양한 요소들이 융합적으로 상호작용하게 되는 복잡한 구조를 가집니다. 이러한 시스템을 대상으로 저희 연구실에서는 전통적인 메모리 취약점 보다는 네트워크 프로토콜 상의 취약점 또는 인증과 관련한 로직버그, 비행 정책우회 등에 관한 보안 문제를 연구합니다. 연구 수행을 위해서는 펌웨어에 대한 리버싱, 암/복호화에 대한 분석, 소스코드를 기반으로 하는 다양한 보안기술 적용, 바이너리를 대상으로 하는 디버깅 기술 적용 등이 요구됩니다.




Web Application Security

저희 연구실에서는 웹 어플리케이션, 클라우드 서버 를 대상으로 보안취약점에 대한 연구를 수행합니다. 최근의 웹 어플리케이션은 인터넷 홍보/게시판 등의 1차적 기능만을 수행하는 것이 아니라, 클라우드 시스템에 대한 Front-End 와 Back-End 로 REST API 를 활용하여 복잡하게 구성됩니다. 이러한 경우 웹 어플리케이션에 대한 공격에 다양한 벡터가 생길 수 있으며, 특히 SSRF 등을 통해서 Back-End 에 있는 내부망에 대한 2차적인 공격 시나리오가 많아질 수 있습니다.

스캐너 등을 통해 비교적 쉽게 발견하고 고칠 수 있는 전통적인 웹 어플리케이션에서의 보안문제들 (SQLi, XSS, CSRF 등) 은 웹 개발 인프라의 발달로 인해 줄어드는 추세이나, 반면에 REST API 보안문제, 템플릿 인젝션, 클라우드와의 연동에서의 보안문제 등 시스템의 구성 자체가 복잡해짐에 따라 발생할 수 있는 논리적인 취약점들은 늘어날 것으로 예상되며, 이에 따라 선제적으로 취약성을 발견하여 공격을 방어하기 위한 연구가 필요합니다. 저희 연구실에서는 Client 측 (브라우저 보안, JavaScript RCE, UXSS 등) 보다는 Server 측에 대한 보안문제들을 더 중점적으로 연구합니다.




Fuzzing

메모리 버그 기반의 보안 취약점들은 Fuzzing 이라는 방법으로 탐색을 자동화 할 수 있으며 이와 관련해서 수많은 연구들이 수행되고 있습니다. Fuzzing@Home 은 이러한 Fuzzing 프로그램을 비신뢰 이기종 단말로 구성된 분산 컴퓨팅 네트워크에서 효율적으로 수행할 수 있는 인프라를 구축한 연구입니다. 아래의 그림은 Fuzzing@Home 시스템의 일부분으로, Google 의 libfuzzer 를 Web Assembly 바이너리로 포팅하여 웹 브라우저 엔진 내부에서 실행시킬 수 있도록 한 것을 나타냅니다.

다행히 (안타깝게도) 보안 기술의 발달로 인해 최신 소프트웨어에서는 단순 메모리 버그가 점점 사라지고 있습니다. 또한, 컴파일러 보안 기술의 발달로 인해 대다수의 메모리 버그들은 점점더 Unexploitable 해지고 있습니다. 그 대신, 클라우드 기반의 서비스들이 많아지며, 시스템 구성 자체가 복잡해짐에 따라 새로운 종류의 논리적 보안 취약점들은 앞으로 더 많아질 것으로 보입니다.

저희 연구실에서는 커널과 같이 코드베이스가 큰 시스템을 대상으로는 메모리 취약점을 연구하고 인터페이스 및 구성이 복잡한 시스템을 대상으로는 논리적인 취약점을 위주로 연구를 수행합니다. 아래 시스템들이 PWNLAB 에서의 주 취약점 연구 대상입니다.

  • 운영체제 커널 (Linux, Windows, FreeBSD, …)
  • 웹 어플리케이션 및 서버 (DBMS, Apache/Nginx, PHP, Flask, …)
  • 드론시스템 (PX4, Ardupilot, DJI, GCS, RC…)
  • 클라우드/컨테이너 (Docker, Kubernetes, Podman, …)