1. Introduction

"Lotto" 프로젝트 2009. 6. 16. 22:42

I'm prepare to make an estimate of lotto numbers. As a result of searching, some sites are serve this service. 
This works only for fun to me, but to make an estimate of lotto numbers is surely hard working. However, 
obviously, when I try to use some mathematical methods, I can be learn a lot from this work, and maybe it 
helps mywork ,too. Therefore, I anticipate great plasure from its works. :) 
:

2.6 - Phase 3 진행 상황 (브래인스토밍)

프로그래밍/패킷 캡쳐 2009. 6. 16. 10:19
오늘도 잡담으로 시작해볼까요.... 내일 시험 두 갠데 빨리 테스트를 해보고 싶은 마음에 왼쪽눈으로 보고 오른쪽눈으
로 흘리면서 공부 하고 코딩을 시작했습니다. 아니 근데 이게 왠걸.... 몇 몇 버그가 보이기 시작한겁니다 ....
예를들어 현재 Tcp Table에 최대 node 수를 50개로 정해놧는데 이게 저장 메커니즘에서는 별 문제가 없는데 읽어 오
는 메커니즘에서 문제를 야기 하더라구요... 10메가 정도 짜리만 읽어도 node수가 50개가 넘어 버리니... 이걸 고칠까 하다가 일단 체크만 해두고 넘어 갓습니다... 어떻게 해야 할지 막막하네요 동적으로 하려면 Phase 1의 코드속으로  들어가야 하는데.. 왠만해서는 그 부분은 건들이기가 싫어서요 ,.... 그곳은 버그 하나 수정하면 두개가 나올것 같은 곳이라 ....

Anyway! 오늘은 많이 진행은 못한지라 브레인스토밍만 하고 포스팅을 마치도록 하겟습니다.


Phase 3  의 진행 순서

1. Phase 2에서 발생한 Signature Table을 메모리에 모두 올립니다.. 
2. Phase 3를 시작하면 그 때 부터 들어오는 패킷들에 대해 메모리에 올린 Sig Table들과 비교를 합니다.
3. Sig Table 비교 결과는 Traffic List Controld의 텍스트 색을 보고 알 수 있습니다.
- 하얀색 : 패킷의 데이터 길이가 0  인 경우 (이 경우 무시합니다.)
- 빨간색 : TAS가 x 프로세스라고 분석햇지만 Sig Table에는 해당 Signature가 존재 하지 않는 경우
- 녹색 : TAS가 x 프로세스라고 분석햇지만 Sig Table은 y 프로세스 라고 분석하는 경우
- 파란색 : TAS가 x 프로세스라고 분석하고 Sig Table도 역시 x 프로세스라고 분석하는 경우
- 검은색 : TAS가 unknown 으로 분석햇지만 Sig Table에서 x 프로세스라고 분석하는 경우


보시면아시겟지만 제 시스템에서는 파란색이 원하는 결과이고 그 다음으로는 검은색 > 녹색 >>>> 빨간색  순 입니다
검은색도 파란색만큼 굉장한 결과를 나타내지만 몇 가지 더 생각해봐야 할 것이 있어서 파란색만큼은 되지 못합니다.녹색도 어느정도 괜찮습니다. 왜냐하면 Signature가 중복 될 수 있기 때문이죠. 

◈ 하지만 여기서 문제는 빨간색입니다. 

시그니처에 매핑이 안되는 새로운 패킷이 들어올경우 시스템에서 얼마나 빠르고 정확하게 대처할 것인가가 매우 중요합니다. 지금 생각하는 방식은 빨간색 패킷이 들어 오는 순간 해당 Packet의 내용을 Sig Table에 등록 합니다. 그러면 동적으로 메모리에 올라와 있는 Sig들이 늘어 나게 되는데 Phase 2와 데이터내용이 맞지 않게 됩니다. 하지만 이를 무시해도 되는 이유는 Phase 2의 로그를 만드는 Phase 1에 이미 해당 Sig를 발생시키는 패킷을 저장하였기 때문에 다시 Signature를 추출하면 해당 Sig가 나올 것이기 때문입니다.

이 문제에 대해서는 앞으로도 많은 얘기를 할거라 생각되기 때문에 여기서 간단하게 줄이겠습니다.


◈ 또 다른 측면에서 다른 것을 생각해보겠습니다. 분석하는 입장에서 2가지 측면이 있을 수 있습니다.

1. 정답지가 있는 상태에서 Sig 와 Packet의 Matching 결과를 감독하는 경우
2. 정답지가 없는 상태에서 Sig 와 Packet의 Matching 결과를 감독하는 경우
( 여기서 정답지란 Phase 1을 통해 나오는 데이터들을 의미합니다. )

과연 이 두 가지 경우를 어떻게 한 화면안에 보여줄까 고민하다가 두 잔의 커피덕에 텍스트를 색상으로 보여주면서 해결하였습니다.


◈ 제 시스템에서의 "분석" 이라는 의미를 정ㅋ벅ㅋ 해봅시다.

분석의 이유
- 시그니처 기반의 프로세스 유추 시스템이 얼마나 분석할 수 있는가 ?

분석할 데이터
- 순수 정답률 :  파란색 / 전체 
- 순수 하지 않은 정답률 : ( 파란색 + 검은색 ) / 전체
- 순수 오답률 :  빨간색 / 전체
- 순수 하지 않은 오답률 : ( 녹색 + 빨간색 ) / 전체
- 오차 : ( 녹색 + 검은색 ) / 전체

분석시 문제점
- 서로 다른 프로세스에서 동일한 Signature를 사용할 때 (ex: 80번 port)
- 의미없는 패킷을 시그니처로 뽑을 경우
-> 시그처를 계속 업데이트 하면서 의미가 없다고 판단되는 노드들의 입지를 줄여 나갑니다.
- Raw 데이터나 Sig Table 데이터의 통합 문제
-> 현재 데이터를 모아야 하는 입장에서 이 문제를 크게 고려하지 않고 만든게 너무 후회되네요...


◈ 이 시스템에서 "Unknown" 으로 분류 하는 경우는 2 가지 경우가 있습니다.

- 프로세스를 열거했는데 못 찾은 경우 (SYN Packet)
-> 현재 이 Unknown에 대해서는 무시하고 있는데 그 이유는 Piggy Backing을 하지 않는 이상 SYN 에는 데이터가 없을 거라 생각하기 때문입니다.

- TAS 실행전에 Tcp 연결되어 통신을 하는 경우 (ACK)


◈ Sig를 이용해 특정 Process의 통신을 막는 것
◈ 발생하는 모든 Log에 대해서는 Dump를 할 수 있도록 하는 것
◈ PUSH + ACK는 어떻게 처리 할 것인가?
◈ 분석률을 그래프로 보여 주기



마 무 리 스 샷


Fig. Phase 3 실험 모습



Fig. 어마어마한 Phase 1의 Chrome 프로세스 파일 용량
:

2.5 - Phase 2 , 1차 완료

프로그래밍/패킷 캡쳐 2009. 6. 15. 09:24
밤샘 코딩 삽질 덕분에 Phase 2가 1차적으로 완료 되었습니다. :) 너무 피곤하네요...  파일에서 읽는 작업을 써버리는바람에 막 코드가 날아 가질 않나.... Flow Data들도 다 날아 가버리지 않나... ㅠㅠ;;; 낼 모래 시험이 두개있어서
오늘 버그 못잡았으면 시험 공부 하면서 계속 생각낫을텐데 끝내서 다행입니다.... !!!!

Phase 2의 변경된 점을 간단히 다시 짚고 넘어 가보겠습니다.

Phase 2의 전체적인 순서는 다음과 같습니다
- 1. 비슷한 행동을 한 패킷끼리 그룹을 한다.
- 2. 그룹에 대해 Signature를 추출한다.

제가 지금 1차적으로 Phase 2를 완료 햇는데 사용한 알고리즘은 패킷의 첫 4 byte만 보는 것 입니다.
그러므로 "1. 비슷한 행동을 한 패킷끼리 그룹을 한다."  부분은 생략하였습니다. 
즉, 그룹을 하지 않고 패킷들의 첫 4byte만 보고 Signature를 생성하였습니다. 1번은 LCS알고리즘을 적용시킬 때 필요 할 것 같네요...

말로 쓰니 엄청 간단한데... 코딩때 별의 별 삽질을 다 하는 바람에... 시간을 무쟈게 잡아 먹엇네요...

Fig. [Phase 2]의 결과 로그 Sig_Table.p2 


Fig. Sig_Table.p2 의 내용


이제 드디어 실험을 할 수 있는 환경을 갖추었습니다!!!  과연 얼마나 분석률이 나올지 궁금하기도 하고 소스 데이터를 모으는데도 집중을 해야 겟네요....

이제 최종적으로 Phase 3 만 남았습니다. 이제 이것만 끝내면 이 System의 1차적인 완성이 되는것이네요

Phase 3 의 기능은 Real-Time으로 Sig Table을 이용해 트래픽들을 분석 하는 것 입니다.
간단히 Matching 만 하는 것이기 때문에 제일 간단한 것 같습니다.

Phase 3외의 다른 기능들에 대해 몇 가지 생각해봤습니다.
1. 실시간 분석률을 그래프로 보이는 것
2. 시스템에서 발생하는 모든 자료를 dump를 할 수 있도록 하는 것
3. Modified LCS 알고리즘 적용하여 Sig 추출

//-- 현재 이 시스템의 명칭은 Traffic Analysis System으로 합니다. --//

: