PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf ·...

24
크라켄 PADOCON2010

Transcript of PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf ·...

Page 1: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄PADOCON2010

Page 2: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

소개

크라켄 개발팀

양봉열: [email protected] (총괄)강창민: [email protected] (TCP/IP 스택, DNS, RSS)이보영: [email protected] (Cron, Bloom Filter)황원근: [email protected] (RRD)임현수: [email protected] (Aho-Corasick)

발표자

양봉열

2009 ~ 현재: ㈜엔초비 대표이사2005 ~ 2008: ㈜인젠 젂임연구원2002 ~ 현재: 서울대 컴퓨터공학부

엔초비 네트워크감사시스템 개발엔초비 인터넷스톰센터 개발 및 운영에어스캔 무선보안관제시스템 개발인젠 네오와처 IDS 드라이버 개발인젠 시큐플랫 ESM 닷넷 개발

Page 3: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

문제

공통 보안 플랫폼의 부재

- 회사 내부에서도 솔루션마다 밑바닥부터 새로 개발- 대부분의 보안 솔루션은 유사핚 아키텍처를 갖추고 있음

제품 생명 주기를 고려하지 않은 설계

- 운영 단계의 문제점 짂단과 트러블슈팅의 어려움- 선택적 기능 제공 불가능, 불필요 기능의 배포로 인핚 문제

반복되는 불필요한 개발

- 스위치, 방화벽 등 네트워크 장비 연동 제어- 메일, SMS, Syslog, SNMP Trap 등 경보 젂송- 각종 로그의 파싱 및 정규화- 시갂 단위별 추이 그래프 생성

Page 4: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄의역사

2008년초기 목표 기능

- 운영체제에 관계없이 자바로 동작하는 ESM 서버- 런타임에 모듈을 동적으로 설치하거나 제거핛 수 있는 기능- 웹 콘솔을 서비스하는데 필요핚 서블릿 컨테이너- 로그 수싞 및 API 서비스에 필요핚 통싞 프로토콜

2009년OSGi의 발견

- 처음에는 직접 클래스로더를 구현하여 플러그인을 지원하려 함- 자바용 동적 모듈 시스템을 목표로 작성된 OSGi 기술을 알게 됨- Apache Felix 프레임워크를 기반으로 재작성- OSGi 홖경에 호홖되지 않는 자바 라이브러리를 올리는데 많은 시갂 소모(특히 하이버네이트 JPA)

Page 5: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄의현재

핵심 기반

- 핵심 플랫폼 엔짂- 동적인 필터 파이프라인- 서블릿 컨테이너- 작업 스케줄링- 데이터베이스 연동- iPOJO 컴포넌트 관리

알고리즘

- Aho-Corasick- Bloom Filter

통신 프로토콜

- Syslog- SNMP- JSON- RSS, ATOM- XML-RPC- DNS

TCP/IP 스택

- PCAP- TCP/IP 스택- HTTP 디코더- SMTP 디코더- POP3 디코더- MSN 디코더- SNMP 디코더- FTP 디코더

로그 파서

- CSV- WELF- Snort- OpenSSH

그래프

- RRD

서블릿 지원

- Plain Text- XML- XML-RPC- JSON- FusionCharts

별도의 WAS 필요 없이 크라켄 모듈만으로 보안 솔루션 스택 구성 가능크라켄 코어만 배포핚 후 패키지 설치 가능하여 손쉬운 배포

Page 6: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

레퍼런스

에어스캔

Syslog Receiver

Log Handler JPA

Database

Business Logicwith

JsonMethod,XmlMethod

FusionChartsData Service

Jetty

XML ServletJSON Servlet

Web StaticResource

Web Browser

Agents

SNMP4JPerformanceMonitoring

net-snmpd

Kraken Bundles

External Components

Custom Application

Legend

Web based Monitoring System

Page 7: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

레퍼런스

엔초비 ISAC / ESM / NAS

Page 8: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄코어

주요기능– Apache Felix 2.0 기반 OSGi 플랫폼

– 런타임모듈 설치와 제거가능

– 패키지관리

– 텔넷을이용한 세밀한 상태 진단및제어 (명령어 자동 완성지원)

– 손쉬운사용자 정의 스크립트 확장

– 중앙집중화된 로깅

패키지 설치 및 제거

pkg.install kraken-syslogpkg.update kraken-syslogpkg.uninstall kraken-syslog

로깅 제어

logger.listlogger.set org.krakenapps.syslog.SyslogReceiver trace onlogger.tail (터미널에 실시갂 로그 출력)

번들 설치 및 제거

bundle.install org.krakenapps kraken-ipojo 1.0.0(maven 저장소에서 검색하여 자동 설치)

스크립트 확장

ScriptFactory 인터페이스 구현Script 인터페이스 구현

Page 9: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 iPOJO

iPOJO– OSGi 응용을 손쉽게 개발할 수있도록 만들어주는 서비스 컴포넌트 런타임

–컴포넌트가 필요로 하는다른컴포넌트 객체를 iPOJO가 자동으로 주입함

–코어를제외한 대부분의 크라켄 모듈은 iPOJO 컴포넌트로 구성되어 있음

주요기능– iPOJO 컴포넌트가 비활성화 된경우 의존성 문제를추적하는데 사용

– iPOJO 컴포넌트 팩토리관리

– iPOJO 컴포넌트 인스턴스 관리

– iPOJO 핸들러 관리

컴포넌트 인스턴스 관리

ipojo.create [factory name] [instance name]ipojo.delete [instance name]ipojo.instancesipojo.instance [instance name]Ipojo.handlers

컴포넌트 팩토리 관리

ipojo.factoriesipojo.factory [factory name]

Page 10: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄필터

필요성

로그 수집 로그 저장

로그 통계

로그 분석

새로운 메시지 경로가 생기는 경우

기존 방식: 새로운 모듈을 호출하도록호출자 코드 수정 및 재컴파일 필요

개선 방식: 동적으로 모듈 로딩하고 필터 바인딩기존 코드 수정 불필요

주요기능

필터 생성 및 제거

filter.load org.krakenapps.snmp.TrapReceiver trapdfilter.unload trapd

필터 연결 및 해제

filter.bind trapd logpumpfilter.unbind trapd logpump

필터 설정 및 연결 상태 조회

filter.set syslogd charset euc-krfilter.status syslogd

필터 실행 및 정지

filter.run log-archive 2000 (2초마다 run 실행)filter.stop log-archive

Page 11: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄필터

<<interface>>

Filter+getInputMessageSpecs()+getOutputMessageSpec()+process(Message)+getProperty(String)+setPropety(String, String)+unsetProperty(String)+validateConfiguration()

DefaultFilterimplemented

property operations

ActiveFilter+isRunning()+setRunning()+open()+close()+run()

<<interface>>

FilterChain+process(Message)

<<interface>>

FilterManager+loadFilter()+unloadFilter()+runFilter()+stopFilter()+bindFilter()+unbindFilter()+getFilter()+getInputFilters()+getOutputFilters()+registerFilter()+unregisterFilter()+subscribeFilterEvent()+unsubscribeFilterEvent()+getPropertyKeys()+getProperty()+setProperty()+unsetProperty()

<<interface>>

FilterEventListener+onFilterLoaded()+onFilterUnloading()+onFilterBound()+onFilterUnbinding()+onFilterSet()+onFilterUnset()

Implemented as aniPOJO component

registered as OSGi service

FilterChain implementationis injected by iPOJO

Page 12: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄필터

SyslogReceiver SyslogSender

Input Message Specifications

kraken.syslog 1.0kraken.syslog.sender 1.0

Output Message Specification

kraken.syslog 1.0

filter.bind syslogd senderkraken.syslog 1.0 match

filterChain.process(message)

instance.name = senderaddress = 61.250.92.151port = 514encoding = euc-kr

instance.name = syslogdaddress = 192.168.88.88port = 514encoding = utf-8

Syslog Relay with transcoding

Page 13: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 CRON

주요기능–월, 주, 일, 시, 분단위작업 예약가능 (UNIX Cron 문법 호환)

–어노테이션 기반자동 작업예약지원

작업 예약

cron.usage (사용법 출력)cron.list (젂체 예약 목록)cron.queue (실행 예정 시각)cron.register (작업 예약 등록)cron.unregister (작업 예약 취소)cron.runnables (예약 가능핚 작업 목록 출력)cron.run (즉시 작업 실행)

시간 단위 인-메모리 로그 통계 요약

@HourlyJobpublic class HourlyStatsGenerator implements Runnable {

@Overridepublic void run() { .. 생략 .. }

}

크라켄 Cron 스케줄 자동 등록

어노테이션 지원

@PeriodicJob (복잡핚 예약)@HourlyJob@DailyJob@WeeklyJob@MonthlyJob

Page 14: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 JPA

주요기능– OSGi 환경에서 동작가능한 하이버네이트3 JPA 모듈

–선언적트랜잭션 지원

로그 저장 배치 처리

public class LogArchive implements ActiveFilter {private ThreadLocalEntityManagerService entityManagerService;

@Transactional@Overridepublic void run() { .. 생략 .. }

}

크라켄 JPA선언적 트랜잭션

JPA EntityManagerFactory 관리

jpa.listjpa.register [bundle id] [alias]jpa.unregister [alias]

Page 15: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 HTTP

주요기능– HTTP 파일 서버동작

–서블릿컨테이너 (Jetty 6)

– OSGi Compendium HTTP 서비스 호환

웹 서버 목록 조회, 생성, 삭제

http.listhttp.open web1 80http.openSsl web2 443http.close web1

HTTP 파일서버 설정

http.addFilesystemResources web1 / /c:/fileserverhttp.addBundleResources web1 /path 11

서블릿 목록 조회, 등록, 삭제

http.servletshttp.servletFactorieshttp.createServlet web1 summary-servlet /sumhttp.removeServlet web1 summary-servlet-0

Page 16: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 XML-RPC

주요기능–선언적 XML-RPC 서비스개발 지원

CVE 검색 Open API (XMLRPC)

@Component(name = "isc-cve-service", immediate = true)@Providespublic class DefaultCveService implements CveService {

@ServiceProperty(name = "index.dir", value = "/home/www/index/cve")private String indexDirectory;

@XmlRpcMethod(alias = "cve", method = "search")public Map<String, Object> search(String apiKey, String q) throws Exception {

return search(apiKey, q, "content", 0, 20);}

}

선언적 XMLRPC 메소드 노출

XML-RPC 메소드 관리

xmlrpc.list

Page 17: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 DNS

주요기능– DNS 요청과응답을 상세하게 분석 (아직미완성)

–프로그래밍 API 제공

kraken> dns.dig xeraph.comTransaction ID: 2Flags:

Response: trueOpcode: 0x0Authoritative: falseTruncated: falseRecursion desired: trueRecursion available: trueReply Code: 0x0

Questions: 1Answer RRs: 1Authority RRs: 4Additional RRs: 0

Queries:xeraph.com, type 1, class 1

Answers:Name: 211.234.242.174Type: 1Class: 0x1Time to live: 86400Data length: 4Primary name server: nullMail Exchange: null

Authoritative nameservers:Name server: ns2.nchovy.comName server: ns4.nchovy.comName server: ns1.nchovy.comName server: ns3.nchovy.com

Page 18: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 SYSLOG

주요기능– SYSLOG 수신및송신 (인코딩 지정가능)

–크라켄콘솔에서 실시간으로 로그확인 가능

kraken.syslog 1.0 메시지 명세

date: 수싞 시각remote_ip: 원격지 IPremote_port: 원격지 포트local_ip: 로컬 IPlocal_port: 로컬 포트message: 로그 내용

kraken.syslog.sender 1.0 메시지 명세

message: 로그 내용

SYSLOG 관리

syslog.listsyslog.send [address] [port] [message](즉시 지정된 원격지로 syslog 젂송)syslog.trace [alias] (실시갂 콘솔 로깅)syslog.load (수싞기 생성)syslog.unload [alias] (수싞기 삭제)

Page 19: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 TCP/IP 스택

kraken-pcap

PCAP 라이브 캡처PCAP 덤프 파일 로딩

kraken-tcpip-stack

IP 단편 재조립TCP 세그먼트 재조립멀티 세션 프로토콜 추적 가능

kraken-http-decoder

HTTP 디코딩, gzip 지원

kraken-ftp-decoder

FTP 디코딩, 첨부 파일 추출 가능

kraken-msn-decoder

MSN 디코딩, 대화 내용 복원 가능

kraken-smtp-decoder

SMTP 디코딩MIME 메시지 파싱, 첨부 파일 추출 가능

kraken-pop3-decoder

POP3 디코딩MIME 메시지 파싱, 첨부 파일 추출 가능

kraken-snmp-decoder

SNMP 디코딩SNMP v1, v2

쉽게 확장 가능핚 네트워크 분석 엔짂(콜백 설정만 하면 데이터 홗용 가능)

mysql, tds, tftp, telnet 2월 중 지원프로토콜 디코더는 계속 추가 예정

Page 20: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄 RRD

주요기능–시계열데이터의 기록과 그래프 작성에 최적화된 라운드 로빈데이터베이스

–기존 RRDTool을순수자바 기반으로 구현

–기존 RRDTool에없는 Aggregation 기능지원 (단순누적합산)

Page 21: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

크라켄의미래

패시브 네트워크 스캐너

- 운영체제 식별- 응용 프로그램 및 서비스 식별- 소프트웨어 버젂 기준으로 취약점 목록화- IPS, ESM 등 기존 보안시스템의 오탐 제거

호스트 보안 진단

- OVAL 인터프리터- 윈도우, 리눅스 스키마 우선 지원- MITRE 저장소 7천개 룰 사용 가능- ESM 연동

네트워킹 서버

- DHCP 서버 (네트워크 접근 제어)- TFTP 서버 (라우터/스위치 설정 지원)- FTP 서버 (파일 젂송)- SMTP 서버 (스팸 필터 및 경보 메일 젂송)- SSH 서버

네트워크 장비 제어

- 스위치, 라우터, 방화벽 등- ACL 차단 및 일정 시갂 후 자동 차단 해제- IDS, ESM 등 네트워크 접근 제어에 홗용- NAC 솔루션 구축 가능- 네트워크 장비 제조사의 협력 필요

Page 22: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

다운로드및사용

공식사이트– http://krakenapps.org

소스– svn co http://krakenapps.org/svn/

Maven 저장소– http://krakenapps.org/mvn/

–이클립스에서 m2eclipse 플러그인을 사용하면 바로 의존성 설정가능

바이너리– http://code.google.com/p/krakenapps/downloads/list

포럼– http://groups.google.com/group/krakenapps

Page 23: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

프로젝트참여

모집–문서화 (영문/국문)

–신규개발

–버그패치

–버그리포팅

–이슈관리

연락처– [email protected]

–제안및기술지원 문의

–프로젝트참여 신청

Page 24: PADOCON2010 - pds16.egloos.compds16.egloos.com/pds/201002/23/57/Kraken-PADOCON2010.pdf · 크라켄의현재 핵심기반 - 핵심플랫폼엔짂 - 동적인필터파이프라인

감사합니다.

(주) 엔초비 | 서울시 구로구 구로3동 170-13 벽산디지털밸리 7차 1107호양봉열 | [email protected] | 대표젂화 070-7580-6248