본문 바로가기

Security

HTML 파일 포맷 검출 로직

반응형

HTML

  • HTML 파일은 악성코드 URL 등이 삽입되어서 호출 될 때 취약점 발생가능
  • 공백 하나라도 바뀔 시, 다른 악성코드 URL로 수정될 시 MD5가 계속 바뀌므로 패턴 DB 수정이 계속 일어남 
  • 따라서 MD5 해시 값으로 악성코드 검사 불가능
  • 정규 표현식 사용
    • r'\w+@\w.\w+'
      • r은 파이썬에서 문자열을 임의로 해석하지 말라는 의미
        • 없으면 \n을 엔터키로 해석
      • w는 영문자(소문자/대문자), 숫자, _(언더바) 표현
      • +는 1번 이상 등장
    • python에서 re 모듈로 정규식 적용 간편
      • re.findall(정규식, 문자열) 
        • 문자열에서 정규식 적용된 부분만 찾아서 반환
  • 텍스트 파일인지 확인
    • 파일은 텍스트 파일 or 바이너리 파일
    • p_text = re.compile(r'[\w\s!"#$%^\'()*+,\-,/:'<=>?@\[\\\]\^_'{\|}~]')
    • n_text = len(p_text.findall(buf))
    • if n_text / float(len(buf)) > 0.8?
      • 텍스트에서 나올 수 있는 글자 수가 buf의 전체 길이에서 80% 이상 차지 시 텍스트 파일로 간주
      • 한글은 위 정규표현식 패턴으로 검출이 안되므로 20%는 남김.
  • 텍스트 파일이라면 HTML에서 자주 사용되는 키워드로 검출
    • pat = \r'<\s*html\b|\bdoctype\b|<\s*head\b|<\s*title\b|<\s*meta\b|\bhref\b|\blink\b|<\s*body\b|<\s*script\b|<\s*iframe\b|<\?(php\b)?'
    • re.compile(pat, re.IGNORECASE) 
      • 대소문자 구분없이 매칭
      • https://regex101.com/
  • HTML 파일 내부의 스크립트 파일 추출
반응형

'Security' 카테고리의 다른 글

압축 파일과 임베딩 파일  (0) 2022.01.01
보안 탐지 알고리즘  (0) 2021.12.31
Machine Learning & Security  (0) 2021.12.30
Python plugin engine architecture (키콤)  (0) 2021.12.27
백신 배포본 만들기 (pyinstaller)  (0) 2021.12.22