2018년 12월 24일 월요일

사내보안을 강화하려면

인터넷 끊으면 됨. 피싱이고 APT고 랜섬웨어고 뭐고 다 인터넷만 끊으면 걱정 끝. 이후엔 톰 아저씨만 조심하며 된다. 진짜로(..)

인터넷 끊겨서 직접 왔어

2018년 12월 3일 월요일

Query DSL 맛보기

Elasticsearch에서 원하는 데이터만 삭제하고 싶을 때는 원하는 데이터만 골라주는 쿼리문을 작성해야 하는데, 이때 JSON 기반의 쿼리문을 사용한다. 간단히 얘기하면 {}를 이용해서 계층을 구분하는 쿼리문.

다음은 message 필드값이 'this is a test'인 데이터를 조회하는 'query - match - 필드명' 구조의 쿼리문.


2018년 11월 30일 금요일

Elasticsearch 플래티넘 기능 사용하기

6.3 버전부터 X-Pack 기능이 아예 통합된 건 다들 아실테고, 'Management > License Management' 메뉴에서 'Start trial' 버튼을 클릭하면 해당 기능을 30일간 제한없이 사용할 수 있다. 물론 라이센스 있으면 업데이트 하면 되고.


2018년 11월 15일 목요일

Packetbeat 활용 - 2nd

실시간 모니터링 말고 파일로 저장된 트래픽도 분석할 수 있을까? 당연히 된다. pcap 파일 리플레이를 할 수 있다는 얘기. Winlogbeat도 파일 접근할 수 있게 해줘


2018년 11월 14일 수요일

Packetbeat 활용

가끔 Packetbeat 사용법을 물어보는 분들이 계시는데, 계속 안 써봤다고 답하기 궁색해서 써봄(..) 이름처럼 Packetbeat는 트래픽 데이터 전송 에이전트 역할을 한다. 설정을 살펴보자.

Network device


2018년 11월 7일 수요일

yml? yaml?

엘라스틱 스택의 주요 설정 파일들은 대부분 yml 확장자를 갖는다. 이게 뭔가 싶었는데 데이터 직렬화 응? 직렬 뭐? 양식인 YAML을 줄인 거라고. 읽기 편한 구조를 가지고 있어서 설정 파일 형식으로 많이 쓰인다나.

그런데 이게 읽기 쉬운 구조인 건 알겠는데 문법에 대한 이해 없이 리눅스 설정하듯 쓰면 되겠거니 하다가는 낭패보기 십상이다. 다음은 logstash.yml 설정 구조.

같은 의미, 다른 표현

2018년 10월 31일 수요일

Logstash 권한 문제 - 2nd

file 및 filebeat 입력 플러그인 테스트. 출력 설정에서 'beat' 필드 존재 여부에 따라 인덱스명을 따로 준 이유는, 입력 플러그인에 따라 필드 구조가 달라져서 같은 인덱스명을 사용하면 둘 중 하나는 데이터 저장 실패. Schemaless라더니 은근 까다로움. -_-


2018년 10월 18일 목요일

(경) MySQL 전방탐색 지원 (축)

MySQL은 POSIX 기반 정규표현식을 지원한다. 전방탐색 등의 고오급 기능을 지원하지 않는다는 얘기. 그래서 문제 발생. 다음은 SNORT DB에서 특정 탐지로그를 발생시킨 패킷 페이로드 조회 결과.


2018년 10월 7일 일요일

2018년 10월 1일 월요일

기술이 쉬워지는 두 가지 기준

다니던 회사가 보안인증 심사 대상에 포함됐다던지 하는 이유로 하루 아침에 보안 담당자가 된 분들이 업무의 어려움, 특히 제품 선정 등의 어려움을 토로할 때가 있다.

내가 보안 담당자라니

그럴 때 두 가지 기준만 세워두면 기술 배경 몰라도 보안 그리 어렵지 않다는 얘기를 건넨다. 그간 기술자로 일하면서 쪽팔리지 않으려 발버둥치다 보니 자연스럽게 갖게 된 기준.

2018년 9월 20일 목요일

Logstash 필터 kv

같은 구조임에도 배열이 조금씩 다른 로그가  있다.
sip = 1.1.1.1 dip = 2.2.2.2 sport = 100 dport = 200 action = permit
sip = 1.1.1.1 dip = 2.2.2.2 sport = 100 dport = 200 attack = 10.10.10.10
sip = 1.1.1.1 dip = 2.2.2.2 attack = 10.10.10.10

이런 로그를 처리하려면 필터 설정이 복잡해지게 마련.
filter {
  if "action" in [message] {
    dissect { mapping => { "message" => "sip = %{sip} dip = %{dip} sport = %{sport} dport = %{dport} action = %{action}" } }
  } else if "port" in [message] and "attack" in [message] {
      dissect { mapping => { "message" => "sip = %{sip} dip = %{dip} sport = %{sport} dport = %{dport} attack = %{atack}" } }
  } else {
      dissect { mapping => { "message" => "sip = %{sip} dip = %{dip} attack = %{attack}" } }
  }
}

2018년 9월 16일 일요일

Logstash 연동 에러(Limit of total fields)

로드스태시 연동 과정에서 발생한 에러. 엘라스틱서치에서 하나의 인덱스가 가질 수 있는 필드 개수에 제한이 있나 보다. 기본적으로 허용된 필드 개수는 1,000개. 필드 분류를 어떻게 했길래 개수가 1,000개를 넘어가지?


2018년 9월 9일 일요일

2018년 8월 28일 화요일

Elasticsearch 6.4의 변화

엘라스틱서치가 최근 6.4 버전을 공개했다. 심심해서 버전 릴리즈 추이를 그려봄. 다음은 릴리즈 현황. 2010년에 처음 나왔구나.


2018년 8월 26일 일요일

정규표현식이 최선일까?

로그스태시 필터링 과정에서 grok 필터를, 그러니까 정규표현식을 사용하는 게 최선이냐는 질문을 받았다. 답은 그때 그때 달라요(..)

눈 씻고 봐도 구조 파악이 어려운 비정형 데이터를 정형 데이터로, 일관된 규칙을 갖는 테이블 구조로 바꿀 때는 정규표현식이 최선이다. 그런데 다행히도 컴퓨터에서 발생하는 대부분의 로그는 눈곱만큼이라도 나름의 구조를 가지고 있는 반정형 데이터이다.

grok 필터 작성 사례에 등장했던 로그를 다시 한번 살펴보자. 얼핏 어수선해 보이지만 해당 로그는 뚜렷한 "필드":"구조를 가지고 있다.


2018년 8월 17일 금요일

Logstash 필터 grok 사례

로그스태시를 이용해서 로그를 전송하면 기본적으로 원본 로그는 message 필드에 저장된다.


이 상태에서는 분석할만한 게 없다. 인구 조사를 떠올려보자. 단순히 머릿수만 세면 대한민국 인구 5천만, 이러고 끝이다. 하지만 성별을 분리하면 성비 분석이 가능해지고, 나이를 추가하면 연령대별 인구 통계를 알 수 있다. 집계 대상을 다양화하면 다양한 분석이 가능해진다는 얘기.

2018년 8월 12일 일요일

스위치

칩 히스와 동생 댄 히스 형제의 두번째 저서. 근데 전반적으로 전작 스틱을 많이 재활용한 듯(..) 형제가 사이는 참 좋아 보인다.

두 형제는 이제 마음을 사로잡는 스토리텔링에서 한걸음 더 나아가 인간과 조직의 적극적 행동 변화를 이야기한다.

행동을 극적으로 변화시킬 수 있는 방법은 무엇일까? 간단하다. 기수에게는 방향을, 코끼리에게는 동기를 부여하면 된다고.

기수? 코끼리?

인간의 두뇌에는 2개의 시스템이 있다고 한다. 이성(기수)과 감성(코끼리). 바로 생각에 관한 생각의 대니얼 카너먼이 얘기한 '의식적이고 추론 노력이 필요해서 느린 이성'과 '무의식/본능적이고 자동이라 빠른 감성'.

2018년 8월 5일 일요일

VIM 꼼수의 발견 - 4th

'|' 기호를 이용해서 발생시간, 출발지, 목적지, 출발지포트, 목적지포트, 공격명, 원본로그 필드를 구분하는 로그가 있다.


2018년 7월 29일 일요일

Elasticsearch 활용(scripted field - 2nd)

scripted field 추가 테스트. 다음은 get 메소드에 대한 200 응답코드 검색 결과.


2018년 7월 27일 금요일

2018년 7월 17일 화요일

보안 경제학?

서울대 경제학과 이천표 교수의 2007년 저서. 제목이 너무 부럽다. 공부 열심히 하면 책 제목이 바뀌는구나. 그러니 학생은 닥공

그냥 경제학이 아니라 정보통신 경제학을 강의한다는 저자의 이력이 특이하다. 그리고 무엇보다 정보보안을 바라보는 경제학 교수의 관점이 재미있다.
"기술 만능의 사고는 모든 관련자들로 하여금 안전성 확보를 위해 노력하도록 경제적으로 유인하는 것보다 좋은 해결책이라 할 수 없다 "

경제적 이익으로 유인하면 알아서 척척척 스스로 원해서 보안을 하게 된다는 얘기.

정보보안은 기술적 문제를 넘어선 유인체계의 문제

금융 사고 입증 책임이 고객에게 있는 유럽보다, 은행이 사고 입증 책임을 지는 미국의 사고 발생률이 더 낮다고 한다.

2018년 7월 11일 수요일

2018년 7월 1일 일요일

벌거벗은 통계학

저자 찰스 윌런(Charles Wheelan). 사람들이 통계의 거짓과 진실을 잘 구분할 수 있게 되기를 희망한다고.

가끔 복잡해보이는 수식이 등장하기도 하지만, 크게 신경쓰지 않아도 무리없이 술술 잘 읽힌다. 다음은 저자가 주의를 당부하는 통계 함정들 중 인상깊었던 몇 가지.

분석 단위의 함정

한마디로 최대한 자신에게 유리한 방향으로 통계를 이용하는 행위.

기업법인세 실효세율에 대해 이재명 성남시장은 12%라고 주장했고 전원책 변호사는 16%가 넘는다고 반박... 한 사람은 국내 10대 기업의 실효세율을 기준으로 했고 다른 사람은 전체 기업을 기준으로 잡았기 때문

2018년 6월 24일 일요일

URL, HEX, BASE64 디코딩

트래픽을 분석하다 보면 종종 URL, HEX, BASE64 디코딩이 필요할 때가 있는데, 인터넷에는 관련 서비스를 제공해주는 고마운 분들이 정말 많다.

convertstring.com

2018년 6월 17일 일요일

기계학습과 침입탐지: 문법 추론 결과

네트워크를 통해 전달되는 데이터는 최종적으로 인간이 식별 가능한 문자나 숫자 등의 기호로 표현되는 정보를 송수신하면서 상호간에 서로 의도했던 의미를 수립한다. 데이터 발생 주체가 인간인만큼 너무나 당연하게도 인간의 의사소통과 수단은 다를지언정 그 성격은 똑같다 - IDS와 보안관제의 완성 (29페이지)

'IDS와 보안관제의 완성' 집필 당시, 같은 문자열 패턴에 의해 공격과 정상이 갈리는 문제에 대한 근본적인 해결책을 고민하면서 '현대 기호학의 발전'이란 책을 읽어본 적이 있다.

의사소통에 사용되는 문자 체계의 기본 원리에 해답이 있지 않을까 싶어 시도한 독서. 그런데 기호학이란 분야가 너무 낯설더라(..)

2018년 6월 10일 일요일

VIM 꼼수의 발견 - 2nd

로그 분석이 아닌, 데이터 분석을 하려면 컴퓨터가 읽기(계산하기) 좋게 로그 구조를 바꿀 필요가 있다. 다음은 Snort 데이터베이스에서 특정 로그를 조회할 때, replace 함수를 이용해서 줄바꿈 문자(0D0A)를 공백(20)으로 치환한 결과.


2018년 6월 7일 목요일

인공지능 VS 보안

사실관계가 (패턴매칭 등에 의해) 변형되지 않은 웹로그 등에 대한 이상징후 분석 분야에 인공지능을 도입해야 한다고 생각한다. 다음은 엘라스틱서치의 인공지능머신러닝.


2018년 5월 27일 일요일

2018년 5월 16일 수요일

성능과 정확도 사이에서

대부분의 IT 분야에서 소프트웨어 완성도는 기능이 동작하느냐, 마느냐의 문제다. 그래서 기능이 동작하면 모두가 해피엔딩. 그 다음엔 더 빨리, 더 많이 할 수 있느냐 없느냐의 문제로 확장되겠지만 결론은 마찬가지.

페이스북은 전세계 수억 명 사용자의 좋아요 개수를 잽싸게 수집해서 보여준다. 정확할 필요도 없다. 1K나 1.1K 식으로 두리뭉실 넘어가도 모두가 만족하며, '진짜 좋아할까?'란 의심같은 건 품지 않는다. 좋으니까 좋아요를 눌렀겠지(..)

사람들이 숫자를 좋아하는 이유는 복잡하게 머리 굴리지 않아도 상태 확인이 가능(할 거라 생각)하기 때문. 좋아요나 팔로워 개수만으로 내가 사회생활을 잘 하고 있는지 측정할 수 있으니 얼마나 편한가!?

2018년 5월 3일 목요일

VIM 꼼수의 발견

전에 VIM 사용 설명서(secure 로그 분석 - 6th)란 글에서 ID 문자열을 추출할 때, 양식별로 작업을 진행하느라 많은 노가다가 필요했었다. 대략 재현을 해보자면, 일단 ID 정보가 없는 줄 삭제.


2018년 4월 20일 금요일

Logstash 필터 성능 테스트

윈도우8, i5(CPU), 8GB(Memory), SSD(mSATA) 사용 환경에서 grok, dissect 필터를 이용한 로그 백만 개 입력 테스트를 해봤다.


2018년 4월 19일 목요일

웹로그에서 URL 인코딩된 한글만 찾기

가끔 웹로그에 한글이 포함될 때가 있다. 다음은 한글을 검사하는 정규표현식 '[가-힝]'. '[가-힣]'이 아니라 '[가-힝]'인 이유는 여기 참고.


2018년 4월 16일 월요일

Logstash 권한 문제

logstash 테스트하다 발생한 문제.


다음은 '/etc/logstash/conf.d/sample.log'를 읽어서 '/etc/logstash/logstash_output'에 기록하는 연동 설정(sample.conf).

2018년 4월 8일 일요일

Logstash 필터 dissect

로그 분석을 데이터 분석 수준까지 끌어올리려면 원시로그 덩어리를 필드별 고유성이 명확히 구분되는 테이블 구조로 바꿔야 하는데, 이때 grok 필터의 역할은 독보적이다.

영역별로 윈도우 웹로그를 분리 저장하는 정규표현식

2018년 3월 31일 토요일

스틱

입소문 전략서 '컨테이저스'에서 적극 추천하길래 구입. 저자끼리 아는 사이라고(..)

컨테이저스 저자의 멘토였다는 분이 참여한 책답게 '의사소통의 효과 극대화'라는 주제도 비슷하다. 컨테이저스에 영향 많이 준 듯.

저자 칩 히스와 동생 댄 히스 형제는 스티커처럼 사람들의 뇌리에 착 달라붙을 수 있는 메시지의 여섯 가지 핵심 요소로 단순성, 의외성, 구체성, 신뢰성, 감성, 스토리를 강조한다.

개인적으로 인상깊었던 요소는 단순성.

단순성 - 강한 것은 단순하다

그렇다면 짧고 간결하면 좋은 메시지일까?

2018년 3월 28일 수요일

엘라스틱이 쉬웠던 이유

제목이 너무 도발적인가? 지금 이순간에도 대규모, 대용량 환경에서 성능 등의 문제로 골머리 썩는 분들에겐 죄송(..) 하지만 엘라스틱을 데이터 분석툴로 활용하는 입장에서는 쉬우니 쉽다고 할 수 밖에.


2018년 3월 26일 월요일

Elasticsearch의 정규표현식 검색

엘라스틱서치는 정규표현식 검색도 지원한다. 그런데 제한이 많음. 일단 '\'를 이용한 이스케이프 메타문자는 지원하지 않는다. 다음은 '1=1' 형식의 문자열을 검사하는 정규표현식 검색어 'var.keyword:*%20and%20* AND var_decode.keyword:/.*\d+=\d+.*/'의 검색 결과.


2018년 3월 11일 일요일

Elasticsearch의 특수문자 검색

가끔 엘라스틱서치에서 특수문자를 검색하고 싶을 때가 있는데 잘 안 된다. 다음은 var 필드에서 특수문자 '='을 포함한 모든 문자열을 검사하는 '*=*'의 검색 결과.

'var:*=*' 검색 결과

2018년 3월 4일 일요일

컨테이저스 - 전략적 입소문

어디선가 읽을만하더라는 입소문을 듣고 구입. 다음은 저자 '조나 버거(Jonah Berger)'가 제시하는, 효과적인 입소문 퍼트리기 전략을 위한 여섯 가지 법칙.

소셜 화폐의 법칙 - 사람들은 타인에게 좋은 인상을 남기는 이야기를 공유하며, 자신에 대해 이야기할 때 즐거움을 느낀다고 한다.
자신의 생각이나 사고방식에 대해 말할 때는 음식이나 돈 같은 직접적인 보상에 반응하는 두뇌 회로가 활성화되었다. (62 페이지)

왜 그럴까? 자신에 대한 긍정적인 이미지를 타인에게 전달할 수 있기 때문. 그래서 사람들은 자신에게 나쁜 이미지를 심어줄만한 이야기는 쉽사리 꺼내질 않는다. SNS가 자랑질 배틀이 되기 십상인 이유.

2018년 2월 25일 일요일

xpath를 이용한 이벤트 로그 필터링

강의하다 보면 공개하기 껄끄러운 정보가 포함된 이벤트 로그를 사용해야 할 때가 있는데, 윈도우 이벤트 로그는 텍스트가 아니라서 편집도 안 되고, 시스템 해킹이라도 하지 않는 이상 건드릴 방법이 없어서 난감해진다.

옛날엔 winzapper를 이용해서 특정 이벤트 로그를 지워버리는 방법이 있었지만, 말 그대로 옛날 얘기(..) 원하는 정보만 골라서 쏙 빼버릴 수는 없을까?


2018년 2월 11일 일요일

Logstash 필터 geoip

Wireshark는 maxmind 데이베이스를 이용해서 IP의 지리정보 매핑을 지원한다.


2018년 2월 1일 목요일

엑셀 url decoding

웹브라우저 주소창에서 볼 수 있는 URL 문자열에는 공백문자가 들어갈 수 없다.


2018년 1월 25일 목요일

네트워크 보안 정확도에 대한 관심 추이


대구시가 AI 기반 보안관제 시스템을 구축했다는 기사 한토막. 물 들어올 때 노 젓는다고, 요새 AI 키워드 안 들어간 마케팅이 없는지라 그런가보다 하려는 찰나, '정탐률'이란 단어가 눈에 들어왔다.

10년 이상 이 분야에 종사하면서 '탐지 정확도'를 언급한 기사 볼 일이 없기도 했고, 최신 미국 기술 일변도인 업계의 관심사에 '탐지 정확도'가 포함되기 시작했음을 알리는 징조는 아닐까 싶기도 해서 내심 반가웠다.

말 나온 김에 '탐지 정확도'에 대한 업계의 관심은 어느 정도일까?

2018년 1월 21일 일요일

snort + barnyard2 + mysql7 install script

#!/bin/bash
# on CentOS 7(minimal)
clear mkdir /root/install cd /root/install echo echo "=================================" echo "Step 1 : start mysql installation" echo "=================================" echo read -p "press enter for continue" echo
# mysql 설치를 위한 yum 저장소 구축 rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

2018년 1월 14일 일요일

간만에 Snort 분석(OS-WINDOWS Microsoft Windows SMB Session Setup NTLMSSP unicode asn1 overflow attempt)

이기종간 데이터 통신, 특히 X.509 등 인증서 인코딩에 많이 쓰인다는 ASN.1 프로토콜 버퍼오버플로우 공격을 탐지하는 룰이 있다.

alert tcp $EXTERNAL_NET any -> $HOME_NET 139
(msg:"OS-WINDOWS Microsoft Windows SMB Session Setup NTLMSSP unicode asn1 overflow attempt";
flow:to_server,established;
① content:"|00|"; depth:1;
② content:"|FF|SMBs"; within:5; distance:3;
③ byte_test:1,&,128,6,relative;
④ pcre:"/^.{27}/R";

2018년 1월 6일 토요일

2017년에 있었던 일

어느새 한해가 지났다. 재작년 10월에 탈고한 책을, 작년 4월에 출간하면서 기를 너무 빨렸나? 2017년은 좀 맥없이 보낸 한해가 아닌가 싶다. 1년 동안 뭘 했나 되짚어보는데 특별히 기억나는 게 없음. 대통령 탄핵과 장미 대선으로 전반기는 어수선했고, 후반기는 기아 우승 정도?

그래도 굳이 찾자면 동시통역 당했던(?) 기억이 좀 남달랐던 것 같다. 인도네시아 공무원 대상으로 동시통역사를 끼고 강의할 기회가 있었는데, 처음 경험하는 거라 그런지 많이 색달랐다. 뭐가 색달랐냐면, 내가 얘기 하고 있는데 옆사람이 동시에 떠듬(..)


크리에이티브 커먼즈 라이선스