[파이썬] 소셜 엔지니어링 공격 방어

Social Engineering

소셜 엔지니어링은 사람들의 신뢰를 이용하여 정보를 얻거나 공격을 수행하는 공격 기법입니다. 사회적으로 착각되거나 믿을 만한 상황을 조성하여 사람들을 기만하는 방식으로 정보를 탈취합니다. 이러한 공격은 인간의 실수나 경솔한 행동을 이용하므로 기술적인 방어만으로는 완벽하게 막을 수 없습니다. 그러나 파이썬을 사용하여 일부 소셜 엔지니어링 공격을 탐지하고 방어하는 방법을 배워볼 수 있습니다.

1. 이메일 신뢰성 검사

여러분은 업무용 이메일에서 해커로부터 온 위장된 이메일을 받았다고 가정해 봅시다. 이메일의 제목과 내용은 공식적이고 신뢰할 만한 정보를 담고 있으나 첨부 파일은 검증되지 않는다고 합니다. 이런 경우, 우선적으로 이메일의 신뢰성을 검사해야 합니다.

import re

def check_email_suspiciousness(email):
    suspicious_patterns = ["free", "urgent", "password", "verify"]

    for pattern in suspicious_patterns:
        if re.search(pattern, email, re.IGNORECASE):
            return True

    return False

def process_email(subject, body, attachment):
    if check_email_suspiciousness(subject):
        print("Warning: Suspicious subject detected!")
    if check_email_suspiciousness(body):
        print("Warning: Suspicious content detected!")
    if attachment:
        print("Warning: Unverified attachment detected!")

위 코드는 이메일의 제목과 내용에 일부 의심스러운 패턴이 포함되어 있는지 확인합니다. 만약 의심스러운 패턴이 발견되면 경고 메시지를 출력합니다. 첨부 파일이 있는 경우에는 검증되지 않은 첨부 파일임을 알리기 위한 경고 메시지를 출력합니다.

2. 피싱 사이트 탐지

피싱은 해커가 흔히 사용하는 소셜 엔지니어링 공격 기법 중 하나입니다. 사용자들로부터 개인 정보를 빼내는 목적으로 조작된 웹 사이트를 사용합니다. 파이썬을 사용하여 피싱 사이트를 감지하는 알고리즘을 구현할 수 있습니다.

import requests
import re

def check_phishing_site(url):
    response = requests.get(url)
    html_content = response.text
    
    if re.search("login", html_content, re.IGNORECASE):
        return True
    
    return False

def process_url(url):
    if check_phishing_site(url):
        print("Warning: Phishing site detected!")

위 코드는 주어진 URL에 HTTP 요청을 보내고, 웹 페이지에서 “login”이라는 단어를 검색하여 피싱 사이트 여부를 판단합니다. 만약 “login” 단어가 존재하면 피싱 사이트로 간주하여 경고 메시지를 출력합니다.

결론

이러한 간단한 예시를 통해 소셜 엔지니어링 공격을 감지하고 방어하는 방법을 파이썬을 사용하여 구현할 수 있다는 것을 알 수 있습니다. 개인 및 비즈니스 보안을 강화하기 위해 이러한 방어 장치를 도입하고, 사람들에게 소셜 엔지니어링 공격에 대한 교육을 실시하는 것이 중요합니다.