네트워크 시스템 #6

Jh Park·2022년 9월 22일

로그 분석

1. 로그란

접속한 기록 등이 컴퓨터 내에 남아있는 것, 로그 파일은 컴퓨터의 모든 사용내역을 기록하고 있는 파일이다. 누가 언제(기록 순서 월 일시), 무엇을 어디서 어떻게 등의 정보를 알 수 있으며 운영체제마다 기록 방법이 다르다

2. 로그위치(우분투)

  • cd /var/log
  • ls -l
    • auth.log
      시스템에 로그인 성공 또는 실패에 대한 기록을 남기는 로그
    • syslog
      시스템에 대한 특이점이 있다면 남기는 로그

3. 필요한 명령어

1) 기본적인

  • head -[원하는 줄수][로그파일]
    • 위에서 원하는 n줄수까지, 기본 10줄
  • tail -[원하는 줄수][로그파일] .
    • 아래에서 원하는 n줄까지, 기본 10줄
  • cat [로그파일]
  • less [로그파일]
  • [파일명] 명령문 끝에 '>'을 붙여 파일명을 적으면 해당파일에 저장 '>>' 을 사용하면 기존 파일에 내용이 추가

2) 조건 추가

grep [키워드]

awk(Aho Weinberger Kernighan) : 제작자 3명의 이름

  • $ cat 로그파일 | awk '{print $5,$10,$11}'
  • awk '{print $n $m} : n,m 선택
  • awk -F "|' : | 삭제

3) 치환

sed문 : 치환할 때 사용

  • sed 's/n/m/g'
    n을 m으로 바꿈 sed 's/[**]/|/g' | awk -F "|' '{print $3,$5}'

4) 정규표현식

  • 숫자나 문자의 패턴을 인식하기 위해서 사용하는 표현방식으로 패턴에 해당하는 숫자나 문자를 골라내기 위해서 사용한다.

표현식



출처 : https://hamait.tistory.com/342

[ ] : 대괄호, Braket

  • [a-z] : 소문자 사용 , [A-Z] : 대문자 사용, [0-9] : 숫자 사용, [a-zA-Z0-9] : 소문자,대문자,숫자 사용
    [^x] : x가 아닌것

5) Argus IDS Client

설치과정

$ sudo  apt  install  gcc                          
$ tar zxvf argus-clients-3.0.8.tar.gz
$ cd argus-clients-3.0.8/
$ sudo  apt  install  make
$ sudo  ./configure
$ sudo make  &&  make install
  • ra -nzr [파일명]
    n : number(숫자), z : 상세, r : read file

  • ra -nzr 1_merged_total.arg | head -20

DNS(Domain Name System)

DNS (Domain name Server)의 레코드 타입

  • 정방향
    Domain Name에 해당하는 IP 주소를 알려주는 것
    • A : 정방향 조회 (IPv4 주소를 알려줌)
    • AAAA 또는 A6 : 정방향 조회 (IPv6 주소를 알려줌)
  • PTR(Reverse-lookup Pointer records) : 역방향 조회
    IP주소에 해당하는 Domain Name 를 알려주는 것

DNS레코드 설명 https://win100.tistory.com/360

6) 연습

  • access.log.3.gz 파일 열어보기
    실제 로그는 건들면 안되기에 사전에 복사
$ mkdir /home/j/log
$ sudo cp access.log.3.gz/home/j/log
$ cd /home/j/log
$ sudo gzip -d access.log.3.gz
$ sudo cat access.log.3 | awk '{print $11}' | sort | uniq -c | sort -rn | head  -20

sort : 정렬
uniq -c : 중복 제거, 카운트
sort -rn : 내림차순
sort -n : 오름차순
head -20 : 위에서 20개만

  • DNS로그 분석

    • 특징

      • 구분자를 [**] 사용중
      • Query : Web Browser가 DNS에게 도메인이름에 해당하는 IPv4/IPv6를 물어보는 것(정방향)
      • Response : DNS가 Web Browser에게 IPv4/IPv6를 알려주는 것(역방향)
        ※ 악성코드라면 URL을 DNS에게 물어볼 것임
    • 구분자 제거
      [**]를 제거하면 도네임과 ip의 위치는 $5 $9이다

      cat 2_dns.log  |  sed 's/\[\*\*\]//g' | awk '{print $5,$9}' | sort| uniq -c | sort -rn 

    • Response만 구분하여 dns_search에 저장

      cat 2_dns.log  |  sed  's/\[\*\*\]//g'  |  awk  '$2~/Response/ && $6~"A"  {print $5, $9}' |  sort  |  uniq -c |  sort -rn | head -20  > dns_search

4. 실습

1번 실습

  • 출발지가 192.168.1.0/24이고 외부의 웹서비스(443 or 80)에 접속한 로그만 골라서 web.log 파일로 저장하시오.
ra -nzr 1_merged_total.arg - "src net 192.168.1.0/24 and dst port (443 or 80) and tcp" > web.log

  • 데이터가 너무 많으므로 중복을 제거하고 다시 추출

    ra -nzr 1_merged_total.arg -s saddr,daddr,dport - "src net 192.168.1.0/24 and dst port (443 or 80) and tcp"  | sort | uniq -c  | sort -rn  >  web.log

  • tcp 포트로 출발하는 IP 통계를 구하시오

    ra -nzr 1_merged_total.arg -s saddr - "tcp" | sort | uniq -c | sort –rn
    • 상위에 있는 사람들이 용의자인지를 의심해야함
  • TCP 연결 하는 출발지IP, 목적지IP, 목적지Port를 추출해서 중복제거하고 내림차순 정렬 후 tcp_connection으로 저장

ra -nzr 1_merged_total.arg -s saddr,daddr,stime,dport - "tcp" | awk '{print $1,$2,$4}'  |  sort | uniq -c | sort -rn

  • tcp_connection에서 사설IP를 제외한 상위 30개만 따로 저장
cat  tcp_connection  |  awk '$3!~/^192\.168\.|^172\.16\.|^10\./  {print $2,$3,$4}'  | head -30  >  top30

  • 2_dns.log파일에서 구분자는 파이프로 치환하고 $2에서 Response로 시작하며 $가 A인 것들을 골라 $3와 $6만 추출하여 dns.lookup으로 저장
cat  2_dns.log |  sed 's/\[\*\*\]/|/g'  |  awk -F"|" '$2~/Response/ && $4~"A" {print $3,$6}' | sort -u  > dns.lookup

  • top30에 있는 목적지 주소를 dns.lookup을 참조해서 도메인 이름과 매칭을 시켜서 dns_matched로 저장
root@vm:/home/j/다운로드# cat  top30  |  while  read  line
> do
> dip=$(echo $line | awk '{print $2}')
> domain=$(cat  dns.lookup | awk -v ip=$dip  '$2==ip {print $1}' | head -1)
> echo $line $domain
> done  >  dns_matched

  • blinq.in 의심이 되므로 해당 사이트를 이용한 사람이 더 있는 지 확인
ra  -nzr  1_merged_total.arg   -s saddr,daddr  - "dst host 188.53.211.186" | awk '{print $1}' | sort -u


71,72번이 가능성이 가장 높은 것임을 알 수 있으며 해당 PC를 포렌식 조사를 실시한다.

2번 실습

0개의 댓글