[4]보안 로그 분석

00SNU3K·2021년 9월 15일
0

보안 로그 분석

01. 보안 로그 시스템 이해

  • 보안관제와 로그 개요

    • 보안관제

      • 24시간 정보자산을 지키기 위해 모니터링하고, 최전선에서 외부의 공격자가 전달하는 패킷을 관측한다. 보안관제 서비스를 위해 툴을 사용함
      • 일반 IT 인력으로는 IT 인프라에 대한 관리와 운영 외에 필요한 보안 시스템 관리 및 운영이 어려움
      • 고가의 보안 장비들을 도입하지만 더욱 다양화되고, 지능화된 사이버 위협은 점차 증가
      • 법적으로 보안관제인력은 필수적으로 구성되어야함
      • 실제 침해사고 시 CERT(Computer Emergency Response Team)팀이 대응함
    • 보안관제와 침해사고 분석

      • 초기 분석 -> 오탐인지 해킹인지 판단 -> 긴급대응 -> 위험도 설정
      • 사이버 침해 대응 절차에서 로그 분석의 중요
      • 일반적인 시스템 이벤트 로그로는 보안의 한계가 있음, 그래서 보안 로그가 나옴
        • but, 로그가 모든 것을 다 보여주진 않는다.
      • 예로 들면 웹 서비스의 보안 장비 경로
        • 방화벽(네트워크 경로의 관문) - AntiDDoS(DDoS방어 장비) - IPS/IDS - 웹방화벽- VirusWall - DRM/ DRP/ AntiVirus(Host 단)
        • 이렇게 많은 장비를 각각의 로그로 일일히 다 볼 수 없음. 그래서 공격자의 공격 경로를 모두 식별적으로 보여줄 수 있는 통합로그 분석이 필요함
        • 통합로그 분석 장비
          • ESM(Enterprise Security Management)
          • SIM(Security Information and event Management)
          • EPP
          • SOAR

02. 리눅스/윈도우 보안 장비 로그

  • 윈도우 : eventlog

    • binary 파일로 작성됨
  • 리눅스 : syslog /var/log

    • text를 기반으로 작성됨, but binaray 형태로 저장되는것도 일부 있음

    • cat /var/log/messages

      • 사람이 읽기 편한 형태의 text, 시스템 변경사항들이 저장되어있음, 침해사고대응에서는 이 부분에서 유의미한 로그를 발견하기 어려움. 시스템 관리자의 로그가 많지, 침해사고에는 별로 없지만 꼭 확인해야되긴함
    • cat /var/log/auth.log | more : 한페이지씩 보기 위해 more

      • 인증 로그, 또 다른 버전에는 /var/log/secure
      • PAM : Portable Access ~
      • 원격 또는 로컬 접속등의 로그 정보 있음
    • crontab -l

      • cron으로 설정된 내용들을 볼 수 있음
    • crontab -e

      • cron으로 설정하고 수정할 수 있음
    • cat /var/log/wtmp : 사용자의 로그인/로그아웃, 시스템 부팅/셧다운 히스토리 정보

      • binary형태의 로그, wtmp/utmp/ 등등
      • binary를 볼려면 viewer볼 수 있다. last명령어로 뷰어를 통해 볼 수 있음
    • cat /var/run/utmp : 현재 시스템에 로그인한 사용자 상태 정보

      • who, w, finger, users 를 통해 볼 수 있음. 하지만 버전별로 다를 수도 있음
    • cat /var/log/btmp : 로그인에 실패한 기록 저장

      • last -f /var/log/btmp 이런 식으로 file 형태 옵션으로 볼 수 있음
    • cat /var/log/xferlog : ftp나 ncftp 등의 접속 기록

      • sudo entstat -antp | grep : 21으로 ftp 프로그램 확인
    • syslog의 설정

      • /etc/syslog.conf

      • vi 에디터에서 :set nu 하면 줄에 숫자를 달 수 있음

    • cat /var/log/dmesg

      • 부팅될때의 메시지(부트 메시지)의 로그를 볼 수 있음
    • cat /var/log/boot.log

      • 시스템 데몬들의 실행 또는 재시작 로그 저장
  • 리눅스 웹 로그 분석

    • locate httpd.conf

      • 해당 설정파일이 어디에 위치하는 지 알 수 있음
    • /var/log/apache2안에 apache2 웹서버의 로그들이 있음

    • cat, head, tail, strings, grep, awk, sed 명령어 사용을 자유자재로 써야함

      • grep -i "file_upload.php" access.log.1

        • 이렇게 파일에 대한 웹서버 요청들을 뽑아서 볼 수 있음
      • awk '{print $1, $7}' access.log.1 | more

        • 이렇게 첫번째문자 필드와 일곱번째 필드를 출력하라
        • awk는 기본적으로 필드를 공백으로 나눔
      • awk '{print $1, $7}' access.log.1 | sort -u | more

        • 정렬을 해주되 unique하게 중복된 문자열을 제거해서 할 수 있음
      • awk '{$9 !~/200/}' access.log.1

        • 9번째필드에 대한 조건으로 200의 문자, 즉 HTTP 상태코드 200 OK를 제외하고 출력
      • awk '{$9 !~/200/}' access.log.1 awk '{print $1, $9, $7}' | sort -u | more

        • 200을 제외하고 IP, Response Code, URL 출력
      • cat access.log.1 | grep post

        • post유형의 로그를 볼 수 있다. get 유형은 url에 parameter를 전달하지만 post유형은 body영역에 parameter를 전달하기때문에 웹로그로는 분석을 할 수 없다.
  • 윈도우 이벤트 로그 분석

    • 시스템, 보안감사, 응용프로그램

    • XP -> evt, Vista => evtx

    • Binary -> Viewer (Parser같은 프로그램이 있어야함) => Window에서는 Event Viewer를 제공함

      • C\windows\system32\winevt\logs에 있음
        • application, Security, System등이 있고 powershell등의 로그가 있음
    • Event Viewer : win+R -> eventvwr

      • 보안 - 사용자의 로그온/로그오프 로그를 볼 수 있음
      • 하지만, 로그인만 남기고 로그아웃이나 로그인실패는 없음
        • win+R -> secpol.msc 를 통해 보안 정책 설정에 들어가서 로컬 정책 -> 감사 정책에서 계정 로그온 이벤트 감사를 눌러 성공이나 실패를 눌러 적용하면됨
      • 이벤트 뷰어에서 우측 현재 로그 필터링을 클릭하여 이벤트 ID별로 구별할 수 있고, 더블클릭해서 로그온 유형을 볼 수 있음
        • 로그온 유형음 0~13까지 있는데 0:시스템계정, 2: interactive(로컬, 터미널, 쉘로 ID/PW로 들어옴), 5:서비스를실행할때 해당 계정권한으로 실행
        • 내용을 ctrl+c 복사해서, 우측에 찾기 - 붙여넣기해서 찾을 수도 있음
          • 로그온 유형 10: => 없음. 왜냐 10번은 원격으로 들어오는것을 볼 수 있음
      • Event Viewer는 높은 퍼포먼스를 제공하지않음..
    • Event Explorer : 윈도우 이벤트 로그 툴, 요게 더 나음

  • Event log 뿐만아니라 ETW (Event Tracing for Window) 도 있으니 참고

03. 보안 장비 활용 실습, 04. 로그 발생 및 공격 진행

  • 기본적인 보안 장비?

    • 방화벽, IPS/IDS, 웹방화벽
    • PFsense 네트워크 방화벽, 무료
      • 무료기때문에 내부망과 내부망사이에 많이 사용, 외부망과 내부망에는 무료라서 잘 쓰지 않음
      • System - PackageManager - Available Packages 에 ntopng와 snort 설치
    • SecurityOnion OS
      • IDS, NSM(Network Secuirty Management)라는 시스템을 구동할 수 있는 무료 OS
    • Kibana, Sguil, Snort등을 통해 입력됐던 공격들이 어떻게 탐지되는지, 어떤 방식으로 막을 수 있는지를 볼 수 있음
  • Snort

    • 오픈소스 IDS
    • 상위버전인 수리카타가 개발됨
    • /etc/nsm/rules
      • local.rules
      • downloaded.rules
    • Rule Header
      • Action
        • 어떠한 액션을 취할 것인가
      • Protocol
      • Source IP
      • Source Port
      • Destination IP
      • Destination Port
    • Rule Option
      • msg
        • 그 트래픽에 대한 설명 메시지
          • msg : SQL Injection, XSS, Path Traversal
      • gid
        • 정한 시그니처를 관리하는 용도
      • sid
        • 만든 시그니처의 식별자
        • 1~99, 100~100만까지는 예약된 식별자, 100만 1번부터 사용 가능
      • rev
        • 시그니처의 버전
      • priority
        • 탐지된 옵션의 우선순위
      • reference
        • 해당 공격의 참고자료
      • classtype
        • web application type
      • content
        • 해당 문자열을 포함한 트래픽을 분석함
        • 일반 string"ABC" , 16진수"|41 42 43|"
      • nocase
        • 대소문자 구분이 없게 하도록하겠다
        • "|41 42 43|";nocase; => ABC, abc, Abc, aBc, . . . .
      • depth
        • 페이로드의 처음시작부터 특정부분까지 몇 byte까지
        • depth:5; => 처음부터 5바이트까지 보겠다
      • offset
        • 시작지점에서 offset으로 지정한 바이트만큼 떨어진 부분부터 검사를 시작하라
        • offset:5; => 처음부터 5바이트가 떨어진 곳 부터 검사를 시작하라
      • distance
        • PE헤더에는 실행파일의 시작을 알리는 MZ가 있는데, 예를 들어
        • MZ; distance:16; PE => MZ문구가 있고 16바이트 뒤에 PE라는 문구가 나온다면! 실행가능한 PE파일이 유입되고있다라는 패턴임
      • within
        • content가 매칭되었을때 끝내는 위치를 정하는 것
      • pcre
        • 정규표현식을 기록할 수 있는 옵션
      • detection_filter
        • detection_filter:track by_src, count 30, seconds 60;
        • 60초 안에 30번동안 같은 srcip에서 요청이들어온다면
      • rule을 적용하려면 sudo rule-update
  • SGUIL

    • sudo owasp-zap

05. 네트워크 패킷 분석, 06. 통합 로그 시스템 구축

  • F/W

    • 가장 기본적인 방화벽으로 L4 방화벽, 관문방화벽, Packet Filter 방화벽, 1세대 방화벽이라고도 한다
    • Inline 방식 (패킷의 흐름에 직접적 통제)
    • White List와 Black List를 통한 접근 제어, Black List > White List
    • HTTP(tcp 80), HTTPS(tcp 443), DNS(udp 53)등의 해당 포트에 대한 접근제어가 안됨 (TCP Wrapper)
      • 왜냐? 서비스니까. 모든 접속 시도를 수용해야됨.
    • 여기서 페이로드 확인이 필수적이게 됨
  • 2세대 방화벽

  • 3세대 방화벽(IDS/IPS)

    • 응용계층 방화벽, L7 방화벽

    • IDS(Intrusion Detection System)

      • FIltering 기능 없음, 오직 Mirror/Tap 기능
      • 2002 Code Red Worm 사태 발생
      • filtering 기능이 필요!
    • IPS(Intursion Prevention System)

      • Filter, Inline
        • False Positive : 오탐
        • Flase Negative : 미탐
      • 위의 문제로 Application protocol의 txt, binary, encoding된 문자 등의 비정형화 되어있는 데이터를 정규표현식으로 탐지함.
      • Pattern, Signature등으로...
    • 위 기능들을 합치면서 각 기업에서 한 분야에 특화된 방화벽을 제작하기 시작함

      • Web Application Firewall(WAF)
      • Email Firewall
      • SPAM Filter Firewall
      • Virus-Wall (Binary)
      • Sandbox
      • . . . .
    • VPN, NAC, DRM, DLP, Web Filter

    • APT 방화벽, APT 이메일 솔루션, APT 악성코드 솔루션 등등.. APT 공격의 예방책은 있었으나 대응책이 없었음. APT말그대로 Advanded Persistent Threat처럼 고도화되었고, 목표를위해 영속적인, 위협을 대응하기에는 버거웠음

  • EDR(Endpoint Detection & Response)

    • apt 공격의 모든 대응 방안을 하겠다
  • EPP(Endpoint Protection Platform)

    • 큰 망의 데이터의 가시성을 확보하기 위해서는 플랫폼을 만들겠다
    • EPP의 근간이 되는 것은 SIEM이라는 장비다.
    • IDS/IPS등의 모든 장비들을 SIEM에 넣어두고 가시성을 확보한다. 이렇게 해서 공격자의 흔적을 찾자
  • 참고

    • cve.mitre.org
      • apt 공격 코드 발급
    • attack.mitre.org
      • 위의 인텔리전스를 바탕으로 apt 공격들의 종류를 분류
      • 각각의 단계의 APT공격들 세분화 볼 수 있음
      • APT 그룹의 프로파일링해둠
        • APT 37 - 라자루스 그룹
  • 방어자는 모든 취약점을 제거해야 하지만, 공격자는 하나의 취약점만 발견하면된다

  • 공격자는 모든 흔적을 지워야하지만., 방어자는 하나의 흔적만찾아도 공격을 차단할 수 있다

07. 이상 징후 분석

정규표현식
  • Regular Expression, regexp, regex

  • 특정한 규칙을 가진 문자열의 집합을 표현하는 형식적 언어

  • 문자열의 검색과 치환을 지원

    • snort => PCRE(Perl Compatible Regluar Expression)
    • (msg:""; pcre:"/정규식/")
    • Content : "abc";
    • Content : "|41 42 43|"; nocase;
    • Content => 강력하게 설정, 정확도 향상
    • PCR => 메타문자, 수량자, 클래스, 추가옵션 구성
  • ((010|011|017|019|018|016)-[0-9]{3,4}-[0-9]{4})

  • command execution 취약점을 정규표현식으로 보완

    • &cat /etc/passwd
    • ;cat /etc/passwd
    • '&cat /etc/passwd
    • ';cat /etc/passwd
    • 요걸 url encoding해서 표현해서쓸수도있음 cat이 아닌 딴거를 쓸수도있음
    • cat, strings(파일의 문자열만 출력), head, tail, type 등등..
    • 공백문자 탐지하는방법 -> (\x20 | %20 | /+)
  • FTP => Data Port

    • 데이터 포트로 전송되는 TCP STream = Data Stream
  • HTTP, TFTP

    • Header + Data != Data Stream
    • 헤더를 따로 빼서 추출하고 저장하는 과정이 필요하다
  • HTTP

    • GET, POST => Method
    • Response Code
    • Web Server 정적
    • Web application Server 동적
      • Web Server + Web Application + DB Server
  • HTTPS

    • SSL/TLS

프로토콜 패킷 사례를 통한 기능별 실습

  • http

    • DB_NAME()=0--&user_pw=
      • MSSQL에는 비교를할때 형까지 똑같아야 됨
      • MSSQL 관련된 injection 이미지가 강사가 가지고 있음
  • wireshark도 말고 이번엔 window에서 제공하는 networkminer 도구를 한번 사용해보자

    • 참고로 tcprelay명령어를 통해 sguil 툴로 확인할 수도 있음
    • pcap파일을 networkminer로 분석
      • wireshark보다 더 직관적임
  • Malcious

  • virustotal.com에 file을 넣어서 바이러스가 있는지 확인할 수 있음

  • gar파일을 볼때는 zip파일로 변경하고 풀면됨

  • download by download

  • mitre attack에 모든 정리가 되어있음

profile
네트워크 전문가를 꿈꾸며

0개의 댓글