인공지능 VS 보안
네트워크 보안 분야에서 인공지능 도입이 수월한, 효과가 가장 잘 나올만한 분야는 사실관계가 그대로 기록된 웹로그 등에 대한 이상징후 분석 분야라고 생각한다. 다음은 엘라스틱서치 사례.
https://www.youtube.com/watch?v=mqEqBN0_Lnc
다음은 스플렁크. 모두 이상징후 분석에 촛점이 잡혀있다. 물론 이상징후 분석 시장이 제일 크기 때문이기도 하다. 보안을 포함한 모든 산업 분야에 적용할 수 있으니까.
https://www.youtube.com/watch?v=71tIwFyow-U
엘라스틱서치나 스플렁크가 안 하는 건지, 못하는 건지 모르겠지만, 개인적으로 IDS, IPS 등 패턴매칭 분야에 대한 인공지능 도입 시도에 대해서는 부정적이다. 그 이유는 난 뭐 먹고 살라고
일단 룰이 많다
바둑 룰은 하나다. 이어지는 돌(로 만들어진 집)이 많으면 이긴다. 물론 나는 오목밖에 모름 알파고가 이세돌보다 바둑을 잘 두는 이유는 그 단순한 룰이 담겨진 16만 개(3천만 개의 포석)의 데이터를 들이부었기 때문.
바둑 포석이 우주의 원자 개수보다 많네 어쩌네 하지만, 그건 말 그대로 경우의 수일 뿐이고, 사람 생각하는 게 다르면 얼마나 다를까. 결국 3천만 개의 포석에는 사람 머리에서 나올 법한 포석이 모조리 담겨 있다고 봐도 무방하다. 결과는 천하무적 알파고.
패턴매칭은 룰이 수천 개다. 개점휴업 상태인 룰을 빼도 수백 개 이상. 왜 이렇게 많을까 싶지만, 알려진 공격 패턴(15년쯤 7만 개였던 CVE가 어느새 10만 개)에 비하면 많은 것도 아니다. 결정적으로 룰 제작은 실적으로 이어지기가 아주 쉽다.
새로운 위협에 대응하기 위해 새로운 룰을 만들었습니다란 보고는 칭찬받기 쉽다. 잘했으니까. 그런데 새로 만든 룰이 정확도가 형편 없는 오탐 공장이라는 보고는 하기 어렵다. 혼날테니까.
그래서 사후분석을 통해 정확도를 높이거나, 유사도 측정 등을 통해 중복도를 낮추는 작업은 잘 실행되지 않으며, 실행된다 한들 별로 주목받지도 못한다. 번거로움에 비해 실적이 될 가능성이 낮다는 얘기. 왜 그럴까?
설명이 어렵다. (아래 웹쉘 탐지 예시를 사장님께 설명해보자) 하지만 빅데이터나 인공지능 같은 걸 끼얹으면 설명이 쉬워지는 수준을 넘어, 아예 설명이 필요 없어지는 마법을 경험하게 됨.
결국 사후분석을 하지 않으니 대충 만들어도 되는 룰은 계속 늘어나며, 이런 경향은 룰 제작과 보안관제 수행 조직이 다를수록 두드러진다. 서로 불편해지는 상황은 피하고 싶기 때문. 이런 상황은 각 파트는 맡은 업무를 열심히 하는데도 전체 수준은 떨어지는 희한한 결과로 이어지고(..)
단순하지도 않다
다음은 사장님께 설명해야 하는 JSP 웹쉘 코드 일부.
1 2 3 4 5 6 7 8 9 10
<%@ page import=”java.util.*,java.io.*”%> <HTML><BODY> <H3>JSP SHELL</H3> <FORM METHOD=”GET” NAME=”myform” ACTION=”"> <INPUT TYPE=”text” NAME=”cmd”> <INPUT TYPE=”submit” VALUE=”Execute”> </FORM><PRE><% if (request.getParameter(“cmd”) != null) { out.println(“Command: ” + request.getParameter(“cmd”) + “<BR>”);
자바 패키지를 사용할 수 있게 해주는 코드의 일부인 'import="java'란 패턴으로 JSP 웹쉘 공격을 탐지하는 룰을 만들어 보자. 어떤 일이 벌어질까? 다음은 회원정보를 뿌려주는 JSP 코드 일부.
1 2 3 4 5 6 7 8 9 10
<%@ page import="java.util.*"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>회원 파라미터 출력</title> </head> <body> <h2>request.getParameter() 메서드</h2> name 파라미터 : <%=request.getParameter("name") %><br> age 파라미터 : <%=request.getParameter("age") %><br> gender 파라미터 : <%=request.getParameter("gender") %><br>
'import="java'란 문자열은 JSP 개발 과정에서 흔하게 나타나는 패턴임을 알 수 있다. 그리고 해당 문자열 패턴을 검사하는 룰은 정상 JSP 파일 송수신 트래픽을 죄다 웹쉘 공격이라며 탐지할 것이다.
처음부터 완벽한 룰을 만들기란 어렵다. 물론 'import="java' 패턴은 너무 대충 사후분석을 통한 룰 개선 작업이 이어져야 하는 이유. 그런 체계를 갖추고 있다면 인공지능 도입도 수월하지 않을까? 사후분석 과정에서 인공지능을 가르칠 정오탐 구분 데이터가 쌓일테니까.
쌓인 정오탐 구분 데이터로 룰도 개선할 수 있다. 오탐 원인 제거를 통해 룰이 정확해지면 오탐이 줄테고, 덩달아 로그양도 줄테고, 그러면 수백, 수천 만 개의 로그에서 공격을 찾아 헤매는 일도 줄텐데. 가만 그러면 인공지능 할 일이 없어지겠네!?
까탈스런 패턴매칭
네트워크 보안 업계는 왜 이렇게 까탈스런 '패턴매칭'을 기반 기술로 사용하고 있을까? 그 이유는 인류가 오랜 세월 경험으로 체득한 가장 효과적인 정보 수집/분석 방법이기 때문이다. 쉽게 얘기하면 더 나은 방법이 없다.
컴퓨터 통신은 인간의 의사소통과 그 성격이 같다. 컴퓨터가 스스로 필요해서 하는 일이 아니라, 인간이 시켜서 하는 일이니 너무나 당연한 결과. 그래서 통신 과정에서 발생하는 패턴의 의미를 읽고, 이해하는 과정에서 자연스럽게 상호간의 적대 또는 호의적 관계 여부를 파악할 수 있다.
"네트워크를 통해 전달되는 데이터는 최종적으로 인간이 식별 가능한 문자나 숫자 등의 기호로 표현되는 정보를 송수신하면서 상호간에 서로 의도했던 의미를 수립한다. 데이터 발생 주체가 인간인만큼 너무나 당연하게도 인간의 의사소통과 그 성격이 똑같다" - IDS와 보안관제의 완성(29페이지)
과거, 같은 문자열 패턴에 의해 공격과 정상이 갈리는 문제에 대한 근본적인 해결책이 의사소통에 사용되는 문자 체계의 기본 원리에 있지 않을까 싶어 '현대 기호학의 발전'이란 책을 읽어본 적이 있다. 그런데 언어학이란 분야가 너무 낯설더라(..)
최근 침입탐지 분야에 대한 기계학습 적용 가능성을 타진하는 논문을 읽어보기도 했는데, 방대한 인용에다 온갖 외계 용어와 수식이 난무하는 바람에 이해 불가. 특히 언어학(?)적으로 침입탐지 분야에 기계학습 적용이 어려운 이유에 대한 설명은 당최 모르겠더라. 촘스키 나오고 오토마타 나오는 순간 뇌기능 정지(..)
학부 때 컴파일러 수업 충실히 들은 분들에겐 별로 어렵지 않을 듯. 그래도 어렴풋이 드는 느낌을 얘기해보자면, 침입탐지 로그를 알아서 분석해주는 인공지능을 만들려면 말장난을 이해하는 수준의 인공지능을 먼저 개발한 후, 걔한테 프로토콜과 애플리케이션을 가르치는 게 빠를 거 같다는 정도?
인간은 사고(특히 상상력)와 언어를 통해 만물의 영장이 되었다. 그래서 개인적으로 컴퓨터의 자연어 처리가 완벽해지는 날, 컴퓨터가 '아 다르고 어 다른' 자연어를 자연(?)스럽게 구사하게 되는 날, 인간을 웃기고 싶어서 개그를 치게 되는 날이 진짜 인공지능이 구현되는 날이라고 생각한다.
수단 VS 목적
룰이 수백 개든, 수천 개든 학습 데이터 죽어라 만들다 보면 언젠가는 인공지능이 다 해주는 날도 오겠지. 룰은 계속 만들어질테니, 스스로 학습하는 인공지능이 나오기 전까지 학습 데이터는 계속 만들어줘야겠군.
생각이 이쯤에 이르니 인공지능과 보안 중 뭐가 수단이고, 뭐가 목적인지 모르겠다. 현재로선 인공지능 도입 필요성을 부각하기 위해 금기어였던 정확도를 들춰내고, 학습 데이터를 만들기 위해 관심 밖이던 정오탐 구분을 독려하는 상황이니, 아무래도 목적은(..)
뭐 수단이고, 목적이고 간에, 인공지능 유행 덕분에 보안 정확도에 대한 관심이 조금이라도 높아진다면 개이득 아닌가 싶다. 어쩌다 인공지능 가르칠 학습 데이터 알바를 하게 되면서 이런저런 생각이 들어 끄적여봤다. 비관적으로 보이는데 왜 하냐고? 인공지능이 얼마나 일 잘하는지 구경 좀 해보고 싶더라.