범죄 현장에 있어서 증거를 수집하고 분석하는 것은 수사의 핵심이다. 범죄 현장에서 발견할 수 있는 증거 중 하나인 지문은 사람이 가지고 있는 고유한 정보로 수사를 해결하기 위한 열쇠이다. 지문은 영단어로 **핑거프린트(Fingerprint)**이며 해당 단어는 모의 해킹에서도 등장한다.
모의 해킹은 **Penetration Testing Execution Standard (PTES)**에 의하면 총 일곱 가지 단계로 구성되어 있다. 이는 체계화된 방법으로 모의 해킹을 수행할 수 있도록 돕는다. 처음 과정을 살펴보면, 먼저 공격 대상을 지정하고 대상의 정보를 수집한다. 이때, 대상의 정보를 수집하는 과정을 **핑거프린팅(Fingerprinting)**이라고 한다. 정보 수집은 모의 해킹에 있어 가장 중요한 단계 중 하나이다. 공격 대상이 사용하는 웹 서버와 개발 언어, 그리고 DBMS와 내부 정보 등을 알아내는 과정이 이에 해당한다.
DBMS마다 데이터베이스의 정보를 포괄하는 시스템 테이블이 존재한다. 시스템 테이블에는 설정 및 계정 정보 외에도 테이블과 컬럼 정보, 그리고 현재 실행되고 있는 쿼리의 정보 등 다양한 정보를 포함하고 있다. SQL Injection이 발생한다면 시스템 테이블을 활용하여 테이블과 컬럼명을 쉽게 획득할 수 있다. 예를 들어, 게시판 서비스에서 SELECT 구문을 통해 게시물을 조회하는 기능이 있다고 가정하자. 이때, 공격자는 게시판 관련 테이블이 아닌 시스템 테이블을 조회하는 쿼리를 작성해서 게시물을 통해 데이터베이스의 정보를 획득한다.
실제로 SQL Injection으로 원하는 정보 즉, 계정과 비밀번호를 알아내기 위해서는 해당 정보가 포함된 테이블과 컬럼명을 알아내야 한다. 시스템 테이블을 활용한 공격은 SQL Injection에 있어 빠질 수 없는 가장 중요한 공격 방법 중 하나이다.
MySQL은 스키마와 데이터베이스가 같으며 초기 설치 시 아래와 같이 information_schema와 mysql, performance_schema, 그리고 sys 데이터베이스가 있다. “DREAMHACK”은 이용자가 임의로 생성한 데이터베이스이다.
mysql> show databases;
/*
+--------------------+
| Database |
+--------------------+
| information_schema |
| DREAMHACK | # 이용자 정의 데이터베이스
| mysql |
| performance_schema |
| sys |
+--------------------+
*/
TABLES 테이블을 통해 스키마의 정보를 조회할 수 있다. 아래를 살펴보면, TABLES 테이블의 내용 중 TABLE_SCHEMA에 해당하는 정보를 그룹화하여 조회한다. 쿼리의 결과로 스키마에 대한 정보가 출력된 것을 확인할 수 있다.