오늘도 잡담으로 시작해볼까요.... 내일 시험 두 갠데 빨리 테스트를 해보고 싶은 마음에 왼쪽눈으로 보고 오른쪽눈으
로 흘리면서 공부 하고 코딩을 시작했습니다. 아니 근데 이게 왠걸.... 몇 몇 버그가 보이기 시작한겁니다 ....
예를들어 현재 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 1의 Chrome 프로세스 파일 용량