2017년 12월 17일 일요일

VIM 8.0 버그 하나

'데이터 분석이 쉬워지는 정규표현식' 222페이지에 "‘[^\s]’는 ‘[^s]’와 같다"란 구절이 있다. VIM 정규표현식 문자클래스는 PCRE와 달리 메타문자를 인식하지 않기 때문에 '공백 문자'를 의미하는 메타 문자 '\s'를 입력해도 '공백'이 아닌, 순수 문자 's'를 검사한다는 의미.

그런데 어느 독자분이 '[\s]'는 '\'도 검사하기 때문에 '[s]'와 검사 결과가 다르다는 의견을 보내주셨다. 윤종욱님 감사(__)

다음은 테스트 결과. 정말 '\'가 검사된다.


2017년 12월 12일 화요일

timelion의 필드 집계 오류

웹서버 접속자의 국가별 발생 추이를 그려보자. 다음은 상위 5개의 접속국가 추이를 그려주는 표현식 '.es(split=geoip.country_name:5)'의 사용 결과.


2017년 12월 10일 일요일

시계열 데이터 분석기 timelion

ELK 스택 3대장 중 키바나를 개발한 '라쉬드 칸(Rashid Khan)'이 비행기 타고 가다 뚝딱 만들었다는 timelion.


2017년 11월 26일 일요일

대량살상 수학무기

수학자, 금융공학자, 데이터 과학자라는 무시무시한 타이틀을 가진 캐시 오닐이 자본주의 부역자(?) 신세로 전락하고 있는 데이터 과학의 이면을 고발한 책. 데이터 과학자의 본격 데이터 과학 디스

'월가점거 운동의 하위 조직인 대안금융그룹을 이끌고 있다'는 저자 소개가 심상치 않다. 좌파 냄새가 솔솔(..)

좋은 면이 있으면 안 좋은 면도 존재하는 게 세상 만사 이치. 수십억 인구를 절대 빈곤에서 해방시킨 자본주의가 우수한 사회 체제임은 분명하다.

하지만 역시나 단점은 존재한다. 유발 하라리는 '사피엔스'에서 자본주의의 단점을 이렇게 얘기했다.

"노예무역이 아프리카인을 향한 증오의 결과가 아니었던 것처럼, 현대의 동물산업도 악의를 기반으로 출발한 것이 아니었다. 이번에도 그 연료는 무관심이다." (486 페이지)

2017년 11월 20일 월요일

네트워크 보안 실무

2012년, 'IDS와 보안관제의 완성' 초고를 완성한 나는 다음 문구를 두고 살짝 고민중이었다.

"IDS의 오탐, 즉 부정확한 패턴매칭의 문제를 해결한 국가나 기업이 있을까? 다행인지 불행인지 모르겠지만, IDS를 만든 미국도 아직 해결책을 찾지 못한 것으로 보인다." (455 페이지)

나름 열심히 해외 사례를 찾아본 결과, 미국은 물론, 그 어디에서도 문제 인식 단계를 벗어나지 못했다는 결론을 내렸지만 중2 수준의 내 영어 실력이 영 찜찜했기 때문(..)

그래서 다시 폭풍 검색. 그리고 발견.

"왜 대부분의 IDS가 무용지물이 되어 가고 있는지"

700여 페이지에 달하는 방대한 분량 대부분을 네트워크 분석을 위한 오픈소스 도구 소개에 할애하고 있지만, 곳곳에서 네트워크 보안에 대한 저자의 철학과 고뇌를 엿볼 수 있는 '네트워크 보안 실무'의 출판사 리뷰였다.

2017년 11월 13일 월요일

2017년 11월 5일 일요일

Elasticsearch 활용(Web Log 이상징후 분석 - 4th)

지난 시간에 응답코드 404와 500 발생 건수 변화 추적을 통해 이상징후를 포착하는 과정을 살펴봤었는데, 그때 404의 경우 파일 확장자 발생 개수 조건을 참고하면 판단이 조금은 쉬워진다는 사실을 알 수 있었다. 흔한 상관분석 사례.

그렇다면 응답코드 500 발생 상황에서 판단의 정확도를 높여주는 다른 조건은 없을까? 응답코드 500은 웹서버가 사용자 요청 처리에 실패하고 드러누웠다는 얘기.


2017년 10월 26일 목요일

Logstash 필터 ruby

야구 끝나고 기분 좋게 포스팅 하나. (현종아 잘했다 ㅜㅜ) 이상징후 분석은 로그의 특정 상태를 숫자로 바꾼 후, 그 숫자를 세는 것이라고 했는데, 숫자로 바꾸기 어려운 상태도 있을 것이다. 예를 들면, 웹로그의 URI 중 변수 길이 같은 거. 어떻게 하면 해당 데이터의 길이를 잴 수 있을까?


2017년 10월 16일 월요일

정보보안과 기술 부채

추석 연휴 기간 동안 미국에서 벌어진 아름다운 버그 바운티 사례 하나. Karan Saini란 보안 연구원이 미국 5대 통신사 중 하나인 T-Mobile 웹사이트의 보안 취약점을 신고해서 1,000달러의 보상금을 받았다고.

재미있는 건 해당 사례가 알려진 후, 익명의 해커들이 해당 취약점을 이미 알고 있었고, 개인정보도 진작에 털어갔다는 제보를 한 것. T-Mobile 측은 '그런 사실 없다'는 입장이지만, 친절한 어느 해커(?)가 유튜브에 해킹 시연 동영상까지 올리는 바람에 말이 많아진 상황이다.


2017년 9월 29일 금요일

심리학으로 보는 로마인 이야기

천 년 로마 흥망사 중 공화정 시대를 심리학 관점에서 풀어놓은 책이다. 가장 재미있게 읽은 부분은 '4장 진보와 보수로 살펴보는 갈등의 심리학' 편.

공화정 말기, 명문가의 자제였던 티베리우스 그라쿠스와 가이우스 그라쿠스, 두 형제는 평민들의 경제적 몰락으로 인한 사회적 혼란과 군사력 약화를 막고자 농지개혁, 세재개편 등의 급진적인 사회개혁을 추진한다.

그러나 개혁정책으로 인한 경제적 손실을 우려한 원로원 귀족들의 반대에 부닥치게 되고 결국 형제 모두 죽임을(..)

"변화를 원하는 이들과 거부하는 이들의 충돌은 극단으로 내달려 티베리우스를 비롯한 그의 지지자 수백 명이 맞아 죽었다." (206페이지)

"원로원은 가이우스 일파를 폭도로 규정했다... 형이 당했던 것처럼 가이우스는 물론 그를 따르던 사람들 수천 명이 죽임을 당했다." (211페이지)

2017년 9월 19일 화요일

Elasticsearch에서 원본 데이터 추출하기

엘라스틱서치에서 원본 데이터를 추출해보자. 그런데 원본 추출 관련 메뉴가 안 보인다(..) 엘라스틱서치는 집계된 데이터의 추출만을 지원하는 듯.


2017년 9월 17일 일요일

Elasticsearch 활용(Web Log 이상징후 분석 - 3rd)

지난 시간에 (없는 페이지 요청에 대한 처리 결과인) 404 응답코드 발생 추이 분석 과정을 살펴봤었다. 보안 관점에서 주목할만한 웹로그 상태로 또 어떤 게 있을까? 500 응답코드는 사용자 요청 처리 실패를 의미한다. 보안은 물론 운영 관점에서도 단골 분석 대상이란 얘기. 다음은 해당 코드 발생 추이.


2017년 9월 10일 일요일

Elasticsearch 활용(Web Log 이상징후 분석 - 2nd)

일반로그의 이상징후 분석이 쉬웠던 이유는 로그를 구성하는 각 상태를 수량화할 수 있었기 때문이며, 수량화만으로 의미 파악이 가능했던 이유는 효과적인 필드 정규화를 통해 각 상태가 해당 상태만의 뚜렷한 고유성을 확보했기 때문이다.

하나의 상태가 하나의 의미만을 가질 수 있도록 필드를 정규화해준 grok 필터가 일 다 했다는 얘기. 필터링 과정을 살펴보자. 다음은 전체 로그 중 'timestamp'와 'method' 및 URL 경로인 'w_path' 정보를 추출해주는 정규표현식.


2017년 9월 8일 금요일

Elasticsearch 활용(Web Log 이상징후 분석)


정말 쉬울까? 한번 해보자. 다음은 윈도우 웹로그 수집 및 정리를 위한 Logstash 설정.

input {
file {
path => "d:/ex.log"
type => "weblog"
start_position => "beginning"
#sincedb_path => "/dev/null"

  한글 인코딩
codec => plain {
charset => "CP949"
  }
 }
}

2017년 9월 5일 화요일

우리는 왜 실수를 하는가

1991년, 의료과실 탐사 보도로 퓰리처 상을 수상한 조지프 핼리넌(Joseph Hallinan)의 2009년 작.

의료과실을 시작으로 무려 20여년 동안이나 인간의 실수 사례를 모으고, 원인을 분석한 후, 나름의 해결책을 제시한 책이다. 일단 저자의 끈기에 감탄.

20여년의 분석 결론은 무엇일까? 저자의 결론은 인간은 실수할 수 밖에 없는 불완전한 존재라는 것. 그리고 실수를 줄이는 방법은 인간 스스로 불완전한 존재임을 인정해야 한다는 것.

왜 인간은 실수할 수 밖에 없을까? 저자는 이렇게 얘기한다.

"인간은 주변 세계를 보고 기억하고 인지하는 과정에서 특정한 구조적 편향에 치우치는 경향이 있는데, 이 구조적 편향 때문에 실수를 저지르곤 한다" (11페이지)

2017년 8월 29일 화요일

2017년 8월 22일 화요일

Elasticsearch 활용(Snort 데이터베이스 연동)

패턴매칭 로그 대시보드를 아무리 잘 꾸며봐야 별 의미는 없지만, 그래도 보기는 좋으니깐. 예쁘게 꾸며진 대시보드를 바라보고 있으면 왠지 일 다 한 것 같은 기분도 들고(..)

보고만 있어도 좋구나^O^

다음은 Snort 데이터베이스를 엘라스틱서치로 연동해주는 Logstash 설정. 참고로 데이터베이스 연동을 안 하는 Snort는 경보와 패킷 페이로드를 따로 저장하는데, 두 개의 로그를 하나로 합쳐서 연동하는 방법은 모르겠다(..)

보안의 오랜 친구 SIEM? - 2nd

지난 글에서 SIEM의 한계를 살펴봤다. 그리고 그 한계 때문에 대부분의 현장에서 실무자들은 SIEM을 로그 샘플링 용도로 활용한다. 오탐 홍수라도 막기 위해서.

Sampling Work Flow

이런 상황임에도 과거의 SIEM 만능론은 빅데이터, 인공지능 유행을 등에 업고 점점 더 확대되는 추세. 이왕 씌워진 콩깍지, 벗겨낼 수 없다면 잘 쓸 수 있는 방법을 찾아보자. 어떻게 하면 SIEM을 보안의 진정한 친구로 만들 수 있을까?

2017년 8월 21일 월요일

보안의 오랜 친구 SIEM?


국내에 ESM(Enterprise Security Management)이란 제품이 알려지기 시작한 게 2000년 말쯤이었으니 틀린 말은 아니다. SIEM으로 시작하더니 ESM은 또 뭘까? 그냥 같은 말이다. 포장지가 달라졌다고 보면 됨.

개인적으로 SIEM과 보안의 만남은 불행한 결말이 예정된 수순이라고 생각한다. 다들 좋다고 찬양인데 나는 왜 새드엔딩이라고 어깃장을 놓는 걸까(..)


2017년 8월 13일 일요일

Elasticsearch 활용(winlogbeat 사용이 힘들 때 - 2nd)

어제 텍스트 형태로 수집된 윈도우 이벤트 로그를 Elasticsearch와 연동하는 과정을 진행했었다. 그런데 한글이 깨진다. 어쩌나?

사실 이벤트 로그는 ID 번호의 의미가 고정돼있기 때문에 메시지가 크게 중요하진 않다. 해당 로그를 구성하고 있는 다른 필드들의 관계를 파악하는 게 더 중요.

하지만 그래도 찝찝하니 깨지는 한글을 복구해보자. 일단 Logstash는 연동되는 로그를 UTF-8로 기본 인식하는 듯하다. 그래서 한글을 복구하려면 연동 대상 로그를 처음부터 UTF-8로 인코딩하거나,


2017년 8월 12일 토요일

Elasticsearch 활용(winlogbeat 사용이 힘들 때)

윈도우 이벤트 로그를 Elasticsearch와 연동할 때, winlogbeat를 이용하면 이래도 되나 싶을 정도로 편하다. 이벤트 로그의 모든 필드를 알아서 정규화해주기 때문. 이래저래 이벤트 로그는 다루기 참 편한 것 같다. Logparser만 있어도 거의 RDB 수준으로 분석할 수 있으니까.

그런데 nxlog 등을 통해 이미 이벤트 로그를 수집하고 있다면, winlogbeat를 이용한 재구축은 번거로울 것이다. 이미 텍스트 형태로 수집된 로그를 Elasticsearch와 연동할 때, 로그 필드 정규화가 필요하다면 grok 필터가 최선. 다음은 nxlog를 이용해서 수집된 윈도우 이벤트 로그.


2017년 8월 6일 일요일

보안이 허술해 보이는 이유

요즘 '난 단지 치킨을 주문했을 뿐인데 범죄의 대상이 될 수 있다니'란 글을 읽고 놀란 분들이 많을 듯하다. 보안 위협이 어제 오늘 일은 아니지만 이렇게 생활 가까이에서 벌어질 거라는 생각을 하는 사람은 많지 않으니까.

그런데 여러 논란의 결론이 주로 사이트를 개발한 사람의 무능력, 비윤리를 질타하는 쪽으로 모아지는 듯해서, 보안 분야에 종사한 죄로 변명을 좀 해볼까 한다.

때는 2000년으로 거슬러 올라간다. 당시 한풀 꺾인 벤처 열풍에도 불구하고 꽤 많은 IT 벤처들이 있었는데, 그중에서도 확실한 수익 모델을 자랑하던 것이 IJ(인터넷 자키)란 신종 직업으로 이슈가 됐던 인터넷 성인방송국.

당시 나는 유료 성인만화를 공짜로 보는 재미에 빠져 있었는데, 무슨 대단한 해킹씩이나 한 건 아니고, 맛보기 후 뜨는 결제 페이지 무시하고, URL 파라미터를 'bla.com/bla.asp?name=bla&page=10'에서 'bla.com/bla.asp?name=bla&page=11'로 고치는 식이었다. 배달앱 고발 글에서 지적한 바로 그 취약점.

2017년 7월 30일 일요일

어떻게 살 것인가?

유시민씨가 정치보다 하고 싶은 일, 책을 읽고 글을 쓰면서 살기로 마음먹은 후 내놓은 첫 번째 책.

'유시민' 하면 14시간만에 작성했다는 항소이유서가 떠오를 만큼, 신속하고 논리정연하게 맥을 짚어내는 그의 필력은 유명하다. (물론 달변가로 더 유명)

그냥 원래 똑똑한 사람이고, 어렸을 때부터 글쓰기 수련을 많이 했겠지 싶었는데, 난데없는 저자의 고백.

"나는 맞지 않으려고 맹렬하게 글을 썼다. 진술서를 쓰는 동안만큼은 때리지 않았기 때문이다... 그때 내가 혹독한 스파르타식 글쓰기 훈련을 했다는 것을 세월이 흐른 뒤에야 깨달았다... 나는 계엄사 합수부 조사실에서 태어난 글쟁이" (153페이지)

보람찬 군생활을 한 이들도 있겠지만, 나를 포함해서 꽤 많은 대한민국 남자들이 군대 이야기에 열을 올리는 이유는 솔직히 그 시간이 아깝기 때문일 것이다. 보람찼다고 스스로에게 암시를 주는 일종의 정신 승리.-_-

2017년 7월 14일 금요일

Logstash 필터 mutate

로그온 이벤트 분석에 사용된 Logstash 설정을 살펴보면, 이벤트 로그의 LogonType 필드를 대상으로 mutate 필터가 많이 사용됐음을 알 수 있다. mutate 필터의 용도는 데이터 변환.

다음은 svchost 프로세스가 Administrator 권한으로 윈도우 주요 서비스 실행에 관여하는 과정에서 발생한 로그온 성공 이벤트. 로그온 유형은 '4(배치 작업)'이다. 프로세스 실행할 때마다 발생하는 듯.


2017년 7월 9일 일요일

Elasticsearch 활용(Logon Event 분석)

이번에는 로그온 이벤트를 분석해보자. winlogbeat 설정에 로그온 성공 및 실패 이벤트 4624, 4625 추가.


winlogbeat가 알아서 필드별 정규화를 해주지만, 몇몇 정보는 가독성을 높이기 위한 가공이 필요하다.

2017년 7월 6일 목요일

기업/기관의 모니터링 시스템 구축 시 생각해볼 점

내가 종사해온 '보안관제'라는 분야는, '관제'라는 단어의 어감에서 알 수 있듯이, 주로 모니터링, 그러니까 컴퓨터 로그를 지켜보는 일이 주 업무이다.


2017년 6월 25일 일요일

Elasticsearch 활용(DNS Event Log 분석 - 2nd)

"데이터 정리가 문제지, 정리된 데이터의 분석은 쉽다
- 데이터 분석이 쉬워지는 정규표현식(459페이지)

elasticsearch도 마찬가지. 3006, 5156 이벤트 로그를 분석에 편리한 형태로 정리해주는 Logstash 설정은 다음과 같다.


#winlogbeat가 보내주는 로그를 5044 포트로 수집
input
 beats { 
  port => 5044 
  } 
 }

filter {
 #3006 이벤트 필터링
 if [event_id] == 3006 {

Elasticsearch 활용(DNS Event Log 분석)

elasticsearch로 DNS 이벤트를 분석해보자. 프로세스 ID와 URL 정보를 기록하는 3006 이벤트, 그리고 'Windows Event Log 분석(DNS Request)'에서 언급했던, 프로세스 이름과 네트워크 연결 정보를 기록하는 5156 이벤트를 조합하면 뭐 좀 나오지 않을까? 다음은 winlogbeat로 전송한 3006, 5156 이벤트를 키바나에서 조회한 결과.


2017년 6월 18일 일요일

Logstash 필터 grok

"데이터를 원본 상태 그대로 분석할 수만 있다면 참 좋겠지만 안타깝게도 그런 경우는 거의 없다.- 데이터 분석이 쉬워지는 정규표현식 (40페이지)

그래서 엘라스틱서치는 분석에 유용한 형태로 로그를 가공할 수 있는 정말 다양한 필터를 제공한다. 그중 가장 빈번하게 사용되는 필터가 grok 필터. 해당 필터는 로그 필드의 여러 정보 중 원하는 영역만을 추출하는 기능을 제공한다.

가령 '출발지 IP는 1.2.3.4입니다'란 정보로 채워진 'message' 필드에서 IP 정보만을 추출하고 싶다면 다음과 같은 필터식을 작성하면 된다.

filter {
  grok {
    match => { "message" => ".+%{IP:client}.+" }
  }
}

grok 필터는 미리 정의된 다양한 정규표현식 패턴을 제공한다. 아래 구문은 'IP' 정규표현식 패턴과 일치하는 문자열을 추출한 후, 'client'란 필드로 저장한다는 의미.

2017년 6월 16일 금요일

Windows Event Log 분석(feat. ElasticSearch)

파워쉘 삽질은 그만하고 엘라스틱서치를 이용해서 이벤트 로그를 분석해보기로 했다. 그런데 홈페이지에서 한글 서비스를 제공하네? 글로벌 벤더들 대부분 아시아 상대로는 중국, 일본어 정도만 제공하는데, 한국 시장을 남다르게 보는 듯. 물론 세부적인 매뉴얼은 다 영어.


2017년 6월 13일 화요일

Windows Event Log 분석(Dns Request - 5th)

DNS 관련 이벤트 로그를 조회 시도 프로세스명과 함께 기록해보려 했으나 잘 안 되는 중. 정확히 얘기하면 같은 시간대에 여러 개의 DNS 조회가 발생해도 마지막 조회만 기록 중. 스크립트를 좀 바꿔봤다. 작업 스케줄 설정(3006 이벤트 발생 시 실행)은 동일.

#이벤트 로그 발생 시간 조회
$TIMESTAMP = Get-WinEvent Microsoft-Windows-DNS-Client/Operational -FilterXpath {*[System/EventID=3006]} -MaxEvents 1 | Select-Object -ExpandProperty timecreated
#해당 시간대 이후 발생한 모든 3006 이벤트 조회
$LOG_LIST = Get-WinEvent -FilterHashtable @{ LogName='microsoft-windows-dns-client/operational'; StartTime=$TIMESTAMP; ID=3006 }

#조회 결과를 한 줄씩 읽어와서 정규화
foreach($LOG in $LOG_LIST) {
    $TIMESTAMP_SPLIT = $TIMESTAMP -split " "
    $LOG_DATE = $TIMESTAMP_SPLIT[0]
    $LOG_TIME = $TIMESTAMP_SPLIT[1]
    $PROC_ID = $LOG | Select-Object -ExpandProperty processid
    $PROC_NAME = Get-Process -id $PROC_ID | Select-Object -ExpandProperty processname

2017년 6월 11일 일요일

2017년 6월 5일 월요일

사피엔스

참신한 발상의 전환이 돋보이는 유발 하라리의 인류 역사서.

저자는 호모 사피엔스가 '인지', '농업', '과학' 혁명을 거쳐 만물의 영장이 되었으며, 이제 신 비슷한 존재가 되려는 시도를 하고 있다고 얘기한다.

'총균쇠'가 인류 역사를 조목조목 정리해준다면, '사피엔스'는 신선한 해석, 특히 인지 및 농업혁명에 대한 해석이 인상적이다.

인지혁명의 핵심은 상상력

팩트 기반의 말과 글만으로 조직할 수 있는 집단의 자연적 규모는 고작 150명 수준이지만 인간은 상상, 즉 허구를 공유함으로써 그 한계를 무너트렸다고.

"인지혁명 이후, 사피엔스는 이중의 실재 속에서 살게 되었다. 한쪽에는 강, 나무, 사자라는 객관적 실재가 있다. 다른 한쪽에는 신, 국가, 법인이라는 가상의 실재가 존재한다." (60페이지)

2017년 6월 3일 토요일

색다른 보안 서비스 plura

해킹을 실시간으로 분석해준다는 plura. '프루라'로 발음하는 듯. (무슨 뜻이지?) 다음은 처음 접했을 당시의 기사 한 토막.


시조새급 보안 기술인 '패턴매칭'을 사용하지만 '난 달라'라는 흔한 컨셉. 인공지능이 유행인 세상이지만 '패턴매칭'은 못버리는구나 하고 말았는데, 우연히 뭐 검색하다가 다시 접하게 됐다. 그런데 '무료 체험' 서비스를 하네?


2017년 5월 28일 일요일

출간 후기

두 번째 책을 출간한 지 한 달 조금 넘었다. 지식의 범위가 넓어지고, 탄탄해짐을 느낄 수 있는, 책을 쓰는 일은 참 즐거운 경험이다. 하지만 원고를 책으로 만드는 과정은 개인적으로 참 별로다. 첫 번째 책을 출간한 뒤 이런 글을 남긴 적이 있다.


서너 달쯤 걸린 교정 과정에 대한 심정을 쓴 글. 지워버리고 싶다. 아마 저 글을 쓸 당시엔 교정 과정의 고통을 다 까먹은 모양(..)

작년 10월말, 출판사를 직접 찾아가 두 번째 원고를 넘기면서 기술적인 왜곡이 발생하지 않게끔, 오탈자만 수정하는 선의 교정 작업을 요청했고, 협조를 약속받았다. 약속대로면 1~2개월이면 끝날 거라 예상.

2017년 5월 20일 토요일

Windows Event Log 분석(DNS Request - 4th)

윈도우에서 DNS 조회 관련 이벤트를 자동으로 저장한다는 사실을 알게 됐다. 같이 기록되는 프로세스 ID를 이용하면 프로세스 이름도 알 수 있다. 그래서 파워쉘 스크립트 작성.

#최신 DNS 조회 내역
$DNS_CMDLET = Get-WinEvent microsoft-windows-dns-client/operational -MaxEvents 1 -FilterXPath "*[System/EventID=3006]"
#프로세스 ID
$PROC_ID = $DNS_CMDLET | Select-Object -ExpandProperty processid
#로그 발생 일시
$TIMESTAMP = $DNS_CMDLET | Select-Object -ExpandProperty timecreated
#로그 발생 내역
$LOG_MSG = $DNS_CMDLET | Select-Object -ExpandProperty message

2017년 5월 16일 화요일

Windows Event Log 분석(DNS Request - 3rd)

지난 시간에 윈도우 5156 이벤트와 Snort 로그를 조합해서 프로세스별 DNS 조회 현황을 살펴봤었다. 지난 시간이라고 하지만 벌써 두 달 전. 그동안 뭐했지?

어쨌든 이벤트 로그와 Snort 조합은 귀찮아서 못하겠더라. 그래서 구글신께 물어봤더니, 윈도우 8.1부터는 DNS 조회 관련 이벤트를 자동으로 저장한다고.


2017년 5월 11일 목요일

대통령의 취임사

문재인 대통령의 취임사를 역대 대통령들의 것과 비교 분석한 연합뉴스 기사. 역대 어느 대통령보다 '대통령'이란 단어를 많이 사용했다고 한다. 멀쩡한 대통령에 대한 국민들의 바람을 안다면 당연한 결과 아닐까?

문재인 대통령 취임사 키워드

2017년 5월 7일 일요일

VIM 치환 결과 표시 특징

6차 대선 토론회 전문의 텍스트 발생 통계. 데이터 분석은 기본적으로 데이터의 개수를 세는 것이다.


2017년 5월 2일 화요일

책 표지 만들기

전작 'IDS와 보안관제의 완성' 때도 그랬지만, 이번에도 표지를 직접 만들었다. 정규표현식이 텍스트를 처리하는 도구이기 때문에 자연스럽게 키보드 이미지로 결정.

처음에는 영화 '원티드'의 한 장면처럼 글쇠들이 허공에서 'Regular Expression' 단어를 이루는 이미지를 구상했지만, 돈 깨지는 소리가 들려서 바로 포기(..)


2017년 4월 25일 화요일

대선 토론 키워드 분석 - 2nd

지난 일요일 대선 후보 3차 토론회가 열렸다.

다음은 후보자별로 언급한 타 후보 비중. 2차 토론 이후로 피아 식별 끝난 듯?


2017년 4월 23일 일요일

대선 토론 키워드 분석

대선이 20여 일도 채 남지 않았다. 항상 추울 때 했었는데 장미 대선이라니, 왠지 묘함. 당연히 요즘 이슈는 대선 후보 토론회. 지난 19일 2차 토론회가 끝났는데, 안 본 사람(나?)이 승자라는 우스개가 난무하길래 토론회 전문을 찾아봤다.

전문을 보고 있자니 호기심 발동. 텍스트 관계망을 분석해봤다. 재미로 했으니 재미로 봐주시라. 다음은 후보자별로 타 후보자를 언급한 빈도를 통해 살펴본 상호 관계망.  ('문 후보' 등의 호칭은 이름으로 변환 후 작업) 1차 토론회는 '문재인-안철수' 양 강 구도로 시작.

1차 토론회

2017년 4월 16일 일요일

데이터 분석(이라 쓰고 노가다라 읽는다)

우아한 백조의 물밑 노가다는 눈에 잘 띄지 않는다. 그래서인지 데이터 분석, 데이터 시각화라는 용어가 꽤 흔해졌음에도 데이터 노가다의 현실 역시 잘 알려지지 않는 듯하다.

infographicslab203.com/how/

2017년 4월 11일 화요일

VIM 정규표현식과 한글

한글은 시스템 운영이나 보안 관점에서 분석할 필요가 없다. 시스템에 영향을 미치지 않기 때문. 하지만 메시지가 포함하고 있는 의미 파악 관점에서는 분석이 필요한데, VIM 정규표현식을 이용해서 한글을 검사할 때는 살짝 주의가 필요하다. 다음은 정규표현식 '[가-힣]'의 검사 결과.


2017년 4월 8일 토요일

데이터 분석이 쉬워지는 정규표현식

두 번째 책을 출간했다. 물론 두 번째라 쉬울 줄 알았던 예상은 완전 계산 착오. 작년 10월 탈고 후, 6개월간 6년은 더 늙은 듯. ㅜㅜ

주제는 정규표현식이다. IDS처럼 너무 오래된, 그래서 인기 없는 그런 기술. 알면 좋지만, 몰라도 크게 불편하지 않다는 인식이 많은 편?

"개발자에게 정말 좋은데, 참 좋은데..."

'처음 시작하는 정규표현식' 표지 뒷면을 장식하고 있는 문구. 이 좋은 걸 왜 안 쓰냐는 저자(?)의 안타까운 심정을 느낄 수 있다.

집필 내내 비슷한 심정이었다.

"개발자에게만 좋은 게 아닌데..."

R이나 파이썬을 포함한 많은 프로그래밍 언어들, 그리고 다양한 데이터 분석 환경에서 정규표현식을 지원한다.

2017년 4월 2일 일요일

Gephi는 얼마나 정확할까?

요즘 로그 분석에 Gephi 활용을 궁리중인데, 사실 정확도가 좀 미심쩍다. 특히 거리 계산을 통해 가까운 개체끼리 그룹을 합쳐 나간다는 '결합형 군집화'가 얼마나 정확한지 궁금하다. 한 번 알아보자.


2017년 3월 30일 목요일

Gephi를 이용한 Web Log 분석

간만에 웹로그 분석. 작년에 이상징후 분석 관점의 웹로그 발생 현황 파악 과정을 살펴봤었다. (그게 벌써 1년 전) 그때 강조했던 게 먼저 '숲을 그린 후, 나무를 파악하자'였는데, 큰 그림을 그린다는 게 사실 쉬운 일은 아니다.

그런데 'Gehpi'를 이용하면 조금은 쉬워지는 듯. 사례를 보자. 다음은 웹 문서 확장자별 응답코드 발생 현황 조회 화면.


2017년 3월 13일 월요일

Windows Event Log 분석(DNS Request - 2nd)

하루 동안 DNS 조회를 시도한 15개의 프로세스가 확인됐다. 당연한 결과지만 웹브라우저인 'chrome.exe'가 가장 많다.


2017년 3월 8일 수요일

2017년 3월 6일 월요일

간만에 Snort 분석(DNS Request - 3rd)

하루 동안 DNS 조회가 시도된 도메인의 검사 범위를 1,300여 개에서 448개로 좁혔다. 이제 448개의 추세선만 분석하면 된다. 물론 쉽지는 않겠지만 1,300개 보다야 양반이지 뭐.


당연히 한동안은 현황 파악을 위한 노가다가 필수다. 조회를 시도하는 도메인의 개수, 유형 등의 정보를 일, 주 단위 등으로 쌓고, 단위별 추세 변화의 차이나 정상과 비정상(으로 보이는) 도메인에 대한 구분 작업을 해야 한다는 얘기.

2017년 2월 27일 월요일

간만에 Snort 분석(DNS Request - 2nd)

하루 동안 (내가?) 내 PC에서 DNS 조회를 시도한 도메인이 5,000여 개에 달한다는 사실이 확인됐다.


2017년 2월 15일 수요일

간만에 Snort 분석(DNS Request)

정말 오랫만에 Snort 로그 분석. 목적지 포트가 53번인 UDP 트래픽을 모조리 탐지하는 다음과 같은 룰이 있다.

alert udp any any -> any 53 \
 (msg:"DNS Request_udp"; classtype:TEST; sid:3000005;)

특정 공격의 탐지보다는 내부에서 발생하는 DNS 조회 현황 파악 용도. (수상쩍은 DNS 조회가 있을지도 모르고) 특정일의 발생 현황을 살펴보자.


2017년 2월 5일 일요일

몰라서 못하는 걸까?


'CxO가 알아야 할 정보보안'의 저자 강은성님의 최근 컬럼. 해커가 아닌 방어 전문가를 양성해야 하고, 이들이 성장할 수 있는 환경을 만들어야 한다는 내용.

'보안관제는 정보보호 분야에 처음 발을 들여 놓는 인력들이 맡는 업무'라는 인식밑에서 고급 수비수를 아무리 많이 양성한들, 그들이 수비를 하고 싶어 할까 싶지만, CxO급에서 이런 생각을 해준다는 것만으로도 힐링이 되는 기분이다. 인공지능에 혹하는 요즘 분위기에 타이밍이 좀 아쉬울뿐.


2017년 1월 21일 토요일

Snort threshold 옵션 설명 정정

Snort는 로그 발생량을 조절할 수 있는, 즉 개별 패킷 단위로 로그를 발생시키지 않고, 특정 기준별로 묶어서 로그를 발생시키는 threshold 옵션을 제공하는데, 예전에 잘못 설명한 부분이 있어서 정정하고자 한다.

기존 설명의 경우 limit 옵션의 로그 발생 기준은 임계 시간, both 옵션의 로그 발생 기준은 IP라고 했었는데, 최근 강의 준비를 하다가 이상한 점 발견. (이상하게 테스트해보고 싶더라.)

alert icmp any any -> any any \
(msg:"icmp-threshold"; itype:8; \
threshold:type threshold, track by_dst, count 2, seconds 3; \
classtype:TEST; sid:5000017;)

2017년 1월 17일 화요일

총균쇠

워낙 유명해서 읽지 않은 이에게도 읽은 듯한 착각을 주는 책. (총, 병균, 쇠붙이의 역사에 대한 책인줄? 정작 총이랑 쇠붙이에 대한 얘기는 별로 없음)

별로 어려운 내용도 없어서 술술 읽힌다. 하지만 너무 길어서 뒷부분을 읽다 보면 앞부분이 기억나지 않는다는 게 함정(..)

읽은지 꽤 된 책인데, 다 읽고 나서 내가 뭘 읽은거지?라는 생각이 들어 당황스러웠던 기억이 난다. (하나의 주제를 가지고 너무 많은 썰을 풀기도 했지만, 주로 화장실에서 잠깐씩만 읽은 탓이 큰 듯)

최근에 '사피엔스'라는 책을 읽다가 내용 전개의 유사성 때문에 다시 들춰보게 됐는데, 누구나 한 번쯤 품었을 듯한 '역사 진행의 차이는 환경적 차이'라는 생각을 가지고 700여 페이지에 달하는 책을 저술한 저자의 필력이 부럽다는 생각이 먼저 든다.

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