시스템 해킹

 

1. 개요
2. 기법


1. 개요


운영 체제소프트웨어, 하드웨어에 내재된 보안 취약점해킹하는 것. 흔히 리트에서 따온 pwn을 써서 포너블(Pwnable)이라고도 부른다.
시스템 해킹을 알려면 운영 체제 책부터 공부해야 한다. 운영체제마다 동작하는 방식도 다르고 프로그램의 소스코드도 달라지기 때문에 윈도우, 리눅스 등으로 나누어 공부한다. 윈도우의 경우 윈도우 시스템 프로그래밍에 대해 공부한 후 운영체제 이론, Windows API 프로그래밍, 리버싱에 대해 공부하면 된다. 리눅스의 경우 리눅스 커널을 공부해야 한다.
API 역시 가장 중요한 개념이다. 어떤 일을 하든 최소한 어떤 항목의 API문서에 필요한 함수나 매크로, 객체가 기술되어 있는지는 알아야 한다. 플랫폼별로 개발용, 네이티브 reference를 모두 외우거나 최소한 기능이라도 알고 있어야 한다. 인간적으로 너무 심하다 싶겠지만 현실은 이렇다.
개발사에서 미처 찾아내지 못 한 취약점 헌팅을 위해서는 프로그램을 리버스 엔지니어링으로 뜯어봐서 구동 원리를 알아내야 한다. 이를 통해 그 프로그램을 해킹할 수 있다. 흔히 일반인들이 해킹해주길 원하는 소프트웨어 라이센스 해킹 (keygen), 게임 해킹 프로그램 역시 리버싱을 이용한 것이다. 리버싱을 위해서는 시스템 해킹에 대한 기초 외에도 어셈블리어를 잘 해야 한다. 어셈블리어는 프로세서가 이해할 수 있는 저 수준언어이다. 그 외에도 리버싱은 악성코드 분석, 해킹 대회 문제 풀이 등 많은 곳에 쓰인다.
대학교 수업에서 '시스템 해킹' 수업이 개설될 경우 칼리 리눅스를 기반으로 정보 수집, 보안 취약점 평가 및 진단, 메타스플로잇, 시스템 진단 등을 배우고 이를 활용해 모의 해킹을 하는 식으로 진행된다.

2. 기법


의외로 간단한 보안 취약점이 치명적인 문제를 일으키는 경우도 있다. 2015년 12월 소개된 CVE-2015-8370 취약점이 그런 종류다. 2009년 12월 배포된 Grub2 1.98부터 2015년 12월 배포된 Grub2 2.02버전까지가 이 문제를 안고 있다. 당시 리눅스 기기를 켜고 나타난 암호 잠금 화면에 백스페이스키 28번을 누르면 저절로 잠금이 풀려버린다.
악성 디바이스 드라이버를 제작해 커널 함수를 조작하기도 한다. MS는 Windows 2000을 비롯한 모든 NT 계열의 윈도우들에다가 이런 보안 취약점을 막기 위해 드라이버는 WHQL[1] 인증(디지털 서명)을 받게 만들었다. WHQL 인증이 되어있지 않은 드라이버를 설치하기 위한 목적으로 7(2008 R2) 까지의 윈도우는 설치 시 뜨는 경고창만 무시하면 되었으나, 8(2012) 부터 10(2016~19) 까지의 윈도우는 반드시 특수한 과정을 거쳐야만 한다. 그 특수한 과정을 어떻게 거치야 하는지는 디바이스 드라이버#s-2 2번 문단을 참고할 것.
[1] Windows Hardware Quality Labs Testing