본문 바로가기
운영체제 (LNX,WIN)

Vi 에디터 스왑파일(swp) 생성 시 공격자 악용 탐지 및 해결 방법

by 날으는물고기 2024. 9. 19.

Vi 에디터 스왑파일(swp) 생성 시 공격자 악용 탐지 및 해결 방법

공격자가 스왑 파일을 악용하여 크레딧 카드 정보를 훔치는 사례에서 보안 대응 측면입니다. 이런 유형의 공격에 효과적으로 대응하기 위해 몇 가지 주요 단계와 권장 사항을 설명합니다.

1. 공격 벡터 이해

공격자는 서버의 스왑 파일을 이용하여 맬웨어를 은닉하고, 일반적인 파일 탐지 방법을 회피할 수 있습니다. 스왑 파일은 보통 편집 도중 발생하는 충돌을 방지하기 위해 생성되며, 이 파일을 통해 악성 코드를 삽입하여 서버에 남겨둘 수 있습니다.

2. 탐지 및 분석

  • 파일 시스템 스캔: 정기적으로 파일 시스템을 스캔하여 의심스러운 스왑 파일을 식별합니다. find 명령어를 활용하여 스왑 파일을 찾을 수 있습니다.
    find / -type f -name "*-swapme"
  • 파일 무결성 검사: osquery와 같은 도구를 사용하여 파일 무결성을 주기적으로 확인합니다. 이를 통해 예상치 못한 파일 변경을 탐지할 수 있습니다.
    SELECT * FROM hash WHERE path LIKE '%-swapme';

3. 대응 조치

  • 스왑 파일 제거: 감염된 스왑 파일을 즉시 제거하고, 시스템 캐시를 정리하여 남아 있는 악성 코드를 삭제합니다.
    rm /path/to/bootstrap.php-swapme
    sudo systemctl restart apache2 # 웹 서버 재시작
  • 시스템 재부팅: 시스템을 재부팅하여 메모리 상에 남아 있을 수 있는 악성 코드도 제거합니다.
  • 계정 및 접근 권한 검토: 서버의 모든 계정과 접근 권한을 검토하고 불필요한 계정을 비활성화합니다.
    cat /etc/passwd | cut -d: -f1

4. 예방 조치

  • 편집기 설정 강화: 편집기의 설정을 강화하여 스왑 파일 생성 시 경고 메시지를 띄우고, 스왑 파일의 경로를 지정하여 특정 위치에만 생성되도록 합니다.
    echo "set directory=~/.vimswap//" >> ~/.vimrc mkdir -p ~/.vimswap
  • 파일 무결성 모니터링: Tripwire, AIDE와 같은 파일 무결성 모니터링 도구를 사용하여 시스템 내의 모든 파일 변경을 모니터링합니다.
  • 최신 패치 적용: 모든 소프트웨어와 운영체제를 최신 버전으로 유지하여 알려진 취약점을 악용한 공격을 방지합니다.
    sudo apt update && sudo apt upgrade -y

5. 보안 조치

  • 침입 탐지 시스템(IDS) 사용: Wazuh와 같은 침입 탐지 시스템을 사용하여 비정상적인 활동을 실시간으로 탐지하고 대응합니다.
  • 로그 모니터링: TheHive와 같은 보안 정보 및 이벤트 관리(SIEM) 시스템을 사용하여 서버 로그를 중앙 집중식으로 모니터링하고 분석합니다.
  • 강화된 접근 통제: SSH 접근을 제한하고, 이중 인증(2FA)을 사용하여 보안을 강화합니다.
    sudo nano /etc/ssh/sshd_config
    
    # 설정 변경
    PermitRootLogin no
    PasswordAuthentication no

스왑 파일을 악용한 공격을 방지하고 대응하기 위해서는 파일 무결성 검사, 스왑 파일 관리, 계정 및 접근 권한 검토, 최신 패치 적용 등 다양한 보안 조치를 취해야 합니다. 정기적인 보안 점검과 모니터링을 통해 서버의 안전성을 높이고, 공격에 대한 대응력을 강화하는 것이 중요합니다. 스왑 파일을 악용한 악성 PHP 파일 유지를 탐지하고 대응하기 위해서는 다음과 같은 단계를 거칠 수 있습니다.

탐지 방법

  1. 스왑 파일 주기적 검사
    • 스왑 파일은 보통 특정 접미사(-swapme 등)나 접두사(.swp, .swo)를 가지므로 이를 기준으로 주기적으로 파일 시스템을 스캔합니다.
    • 예시 스크립트
      find /path/to/your/project -type f \( -name "*-swapme" -o -name ".*.swp" -o -name ".*.swo" \)
  2. 파일 무결성 검사
    • md5sum 또는 sha256sum 등을 이용하여 PHP 파일의 해시값을 주기적으로 생성하고 이전 값과 비교하여 변경 여부를 확인합니다.
    • 예시 스크립트
      find /path/to/your/project -type f -name "*.php" -exec sha256sum {} \; > current_hashes.txt diff previous_hashes.txt current_hashes.txt mv current_hashes.txt previous_hashes.txt
  3. 로그 모니터링
    • auditd 또는 inotify를 사용하여 파일 생성, 수정, 삭제 이벤트를 실시간으로 모니터링합니다.
    • 예시 설정(audit.rules)
      -w /path/to/your/project -p wa -k project_modifications
  4. 정기적 코드 리뷰 및 파일 시스템 검사
    • 개발팀과 협력하여 정기적으로 코드 리뷰를 수행하고, 의심스러운 스왑 파일 및 변경 사항을 점검합니다.

대응 방법

  1. 의심스러운 스왑 파일 삭제
    • 주기적으로 발견된 스왑 파일을 삭제하고, 이를 통해 악성 파일이 유지되지 않도록 합니다.
    • 예시 스크립트
      find /path/to/your/project -type f \( -name "*-swapme" -o -name ".*.swp" -o -name ".*.swo" \) -exec rm -f {} \;
  2. 캐시 초기화
    • 웹 서버 캐시를 주기적으로 초기화하여 캐시를 통해 악성 파일이 계속 제공되는 것을 방지합니다.
    • 예시 스크립트
      sudo systemctl restart apache2 # 또는 nginx
  3. 웹 애플리케이션 방화벽(WAF) 설정
    • WAF를 설정하여 의심스러운 요청을 차단하고, 알려진 취약점을 통한 공격을 방지합니다.
    • 예시 WAF 설정(Apache ModSecurity)
      SecRuleEngine On SecRule ARGS "@rx bootstrapswapme" "id:1234,deny,status:403,msg:'Detected swap file access attempt'"
  4. 보안 패치 및 업데이트
      • 서버와 애플리케이션의 보안 패치를 최신 상태로 유지하고, 취약점을 방지합니다.
      • 자동 업데이트 설정
        sudo apt-get update && sudo apt-get upgrade -y
  5. 접근 제어 강화
    • SSH 접근을 제한하고, 2단계 인증을 설정하여 서버 접근을 강화합니다.
    • sshd_config 설정
      PermitRootLogin no PasswordAuthentication no
  6. 보안 교육
    • 개발자 및 운영자에게 스왑 파일의 위험성과 이에 대한 대응 방법에 대한 교육을 실시합니다.

예시 탐지 및 대응 스크립트

다음은 스왑 파일을 탐지하고 삭제하는 예시 스크립트입니다.

#!/bin/bash

# 스왑 파일 탐지
SWAP_FILES=$(find /path/to/your/project -type f \( -name "*-swapme" -o -name ".*.swp" -o -name ".*.swo" \))

if [ ! -z "$SWAP_FILES" ]; then
  echo "Suspicious swap files found:"
  echo "$SWAP_FILES"

  # 스왑 파일 삭제
  find /path/to/your/project -type f \( -name "*-swapme" -o -name ".*.swp" -o -name ".*.swo" \) -exec rm -f {} \;

  echo "Swap files deleted."

  # 캐시 초기화
  sudo systemctl restart apache2  # 또는 nginx
  echo "Web server cache cleared."
else
  echo "No suspicious swap files found."
fi

이러한 방안을 통해 스왑 파일을 악용한 악성 코드 유지를 효과적으로 탐지하고 대응할 수 있습니다.

Gemini 1.5 Flash를 활용하여 malware 분석 작업을 스케일링하는 방법입니다. Gemini 1.5 Flash는 비용 효율성과 실시간 성능을 우선시하며 빠른 응답 시간이 중요한 전문적인 작업에 적합합니다. 이를 통해 malware 분석을 효율적으로 수행할 수 있습니다.

  • 비용 효율성: Gemini 1.5 Flash는 Gemini 1.5 Pro 모델보다 20배 저렴하여 대규모 분석 작업을 경제적으로 수행할 수 있습니다.
  • 빠른 응답 시간: 실시간 성능이 중요한 작업에 최적화되어 있어 빠른 분석 결과를 제공합니다.

1. 환경 설정

Gemini 1.5 Flash를 사용하기 위해서는 우선 환경 설정이 필요합니다. 이는 다음 단계로 이루어집니다.

1.1. 모델 다운로드 및 설치

Gemini 1.5 Flash 모델을 다운로드하고 설치합니다. 다운로드 링크와 설치 방법은 해당 모델의 공식 문서를 참고하시기 바랍니다.

1.2. 분석 환경 구성

분석을 위한 기본적인 환경을 구성합니다. 이는 Python 등의 프로그래밍 언어와 필요한 라이브러리를 설치하는 것을 포함합니다.

# Python 가상 환경 설정
python3 -m venv venv
source venv/bin/activate

# 필수 라이브러리 설치
pip install gemini-flash
pip install malware-analysis-tools

2. 데이터 준비

malware 샘플을 수집하고 분석할 데이터를 준비합니다. 이를 위해 다양한 소스에서 데이터를 수집할 수 있습니다.

3. 모델 적용

수집한 malware 데이터를 Gemini 1.5 Flash를 사용하여 분석합니다.

3.1. 모델 로드 및 데이터 전처리

수집한 데이터를 모델에 적합한 형식으로 전처리합니다.

import gemini_flash as gf
from malware_analysis_tools import preprocess_data

# 모델 로드
model = gf.load_model('path/to/gemini_flash_model')

# 데이터 전처리
data = preprocess_data('path/to/malware_samples')

3.2. 분석 수행

전처리된 데이터를 모델에 입력하여 분석을 수행합니다.

# 분석 수행
results = model.analyze(data)

# 결과 출력
for result in results:
    print(result)

4. 결과 해석 및 대응

모델이 제공한 분석 결과를 해석하고 필요한 대응을 수행합니다. 분석 결과는 malware의 특성, 종류, 잠재적 위협 등을 포함할 수 있습니다.

5. 스케일링

Gemini 1.5 Flash의 비용 효율성과 성능을 활용하여 대규모 malware 분석을 자동화하고 스케일링할 수 있습니다. 이를 위해 다음과 같은 방법을 사용할 수 있습니다.

5.1. 자동화 스크립트 작성

분석 작업을 자동화하기 위한 스크립트를 작성합니다.

import os

# 샘플 데이터 디렉토리
sample_dir = 'path/to/malware_samples'

# 자동화 스크립트
def automate_analysis(sample_dir):
    for sample in os.listdir(sample_dir):
        data = preprocess_data(os.path.join(sample_dir, sample))
        results = model.analyze(data)
        # 결과 저장
        with open(f'results/{sample}_result.txt', 'w') as f:
            f.write(str(results))

# 실행
automate_analysis(sample_dir)

5.2. 분산 처리

여러 대의 서버를 활용하여 분석 작업을 분산 처리할 수 있습니다. 이를 통해 처리 속도를 더욱 높일 수 있습니다.

from concurrent.futures import ProcessPoolExecutor

def analyze_sample(sample):
    data = preprocess_data(sample)
    results = model.analyze(data)
    return results

# 병렬 처리
with ProcessPoolExecutor(max_workers=4) as executor:
    sample_paths = [os.path.join(sample_dir, sample) for sample in os.listdir(sample_dir)]
    results = list(executor.map(analyze_sample, sample_paths))

# 결과 처리
for result in results:
    print(result)

Gemini 1.5 Flash를 사용하여 malware 분석을 효율적으로 수행하고, 비용 효율성과 빠른 응답 시간을 활용하여 대규모 분석 작업을 스케일링할 수 있습니다. 위의 방법들을 활용하여 실제 환경에서 Gemini 1.5 Flash를 효과적으로 적용해 보시기 바랍니다.

  • 보안: 분석 환경의 보안을 철저히 유지하고, 분석된 데이터를 안전하게 처리합니다.
  • 업데이트: 모델과 분석 도구의 최신 버전을 유지하여 최상의 성능을 확보합니다.
  • 모니터링: 분석 작업의 진행 상황과 결과를 지속적으로 모니터링하고 필요한 조치를 신속히 취합니다.

SSH 접속 후 szrz 명령어로 파일 송수신을 막기 위해서는 몇 가지 방법을 고려할 수 있습니다. 주로 접근 제어와 관련된 방법을 사용하게 됩니다. 다음은 몇 가지 방법입니다.

방법 1: sz와 rz 명령어 삭제 또는 권한 제한

  1. 명령어 삭제
    szrz 명령어가 위치한 경로에서 해당 명령어를 삭제합니다. 예를 들어, /usr/bin에 있는 경우 다음 명령어를 사용합니다.
    sudo rm /usr/bin/sz
    sudo rm /usr/bin/rz
  2. 명령어 권한 제한
    명령어 파일의 실행 권한을 제거하여 일반 사용자가 실행하지 못하게 할 수 있습니다.
    sudo chmod 000 /usr/bin/sz
    sudo chmod 000 /usr/bin/rz

방법 2: 사용자 쉘 환경 제한

사용자 쉘 환경에서 특정 명령어의 실행을 제한할 수 있습니다. 예를 들어, bash 쉘의 경우 .bashrc 파일에서 명령어의 실행을 제한할 수 있습니다.

  1. .bashrc 수정
    사용자 홈 디렉토리의 .bashrc 파일에 다음 내용을 추가하여 szrz 명령어의 실행을 막습니다.
    alias sz="echo 'sz command is disabled.'"
    alias rz="echo 'rz command is disabled.'"
  2. 강제 로그아웃
    szrz 명령어를 실행할 때 강제로 로그아웃 시키는 방법도 있습니다. .bashrc 파일에 다음 내용을 추가합니다.
    sz() { echo "sz command is disabled."; logout; }
    rz() { echo "rz command is disabled."; logout; }

방법 3: 제한된 쉘 사용

사용자에게 제한된 쉘을 할당하여 특정 명령어의 실행을 제한할 수 있습니다. 예를 들어, rbash(restricted bash) 쉘을 사용할 수 있습니다.

  1. rbash 설정
    사용자 계정을 rbash로 변경합니다.
    sudo usermod -s /bin/rbash username
  2. 허용 명령어 설정
    rbash에서 허용할 명령어를 설정합니다. 기본적으로 제한된 쉘은 대부분의 명령어 실행을 차단합니다.

방법 4: PAM (Pluggable Authentication Modules) 사용

PAM을 사용하여 특정 명령어의 실행을 제어할 수 있습니다.

  1. PAM 설정 파일 수정
    /etc/security/exec-deny.conf 파일을 생성하고 다음 내용을 추가합니다.
    /usr/bin/sz
    /usr/bin/rz
  2. PAM 모듈 활성화
    /etc/pam.d/sshd 파일에 다음 줄을 추가합니다.
    session required pam_exec.so /etc/security/exec-deny.sh
  3. 스크립트 작성
    /etc/security/exec-deny.sh 파일을 생성하고 실행 권한을 부여한 후, 다음 스크립트를 추가합니다.
    #!/bin/bash
    DENY_LIST="/etc/security/exec-deny.conf"
    if grep -qx "$PAM_EXEC_ARG" "$DENY_LIST"; then
        echo "This command is not allowed."
        exit 1
    fi

이와 같은 방법들을 통해 SSH 접속 후 szrz 명령어의 실행을 막을 수 있습니다. 각 방법은 시스템의 보안 정책과 사용자 요구 사항에 맞게 선택하여 적용하면 됩니다. SSH 서버 데몬(sshd)에서 특정 명령어(szrz)의 실행을 제한하려면 SSH 서버의 설정을 통해 접근 제어를 구현할 수 있습니다. 이는 PAM (Pluggable Authentication Modules)을 사용하는 방법과 Match Blocks를 사용하는 방법을 포함합니다.

방법 1: Match Blocks를 사용한 접근 제어

SSH 서버 설정 파일 (/etc/ssh/sshd_config)에서 특정 사용자 또는 그룹에 대해 명령어 실행을 제한할 수 있습니다.

  1. sshd_config 파일 수정
    /etc/ssh/sshd_config 파일을 열어 특정 사용자나 그룹에 대해 ForceCommand 옵션을 사용합니다.
    예를 들어, 특정 사용자에게 제한을 설정하려면 다음과 같이 구성합니다.
    Match User your_username
        ForceCommand /usr/local/bin/restricted_shell
  2. 제한된 쉘 스크립트 작성
    /usr/local/bin/restricted_shell 스크립트를 작성하고 실행 권한을 부여합니다.
    #!/bin/bash
    
    case "$SSH_ORIGINAL_COMMAND" in
        sz|rz)
            echo "This command is not allowed."
            ;;
        *)
            $SSH_ORIGINAL_COMMAND
            ;;
    esac
  3. 스크립트 실행 권한 부여
    sudo chmod +x /usr/local/bin/restricted_shell

방법 2: PAM을 사용한 접근 제어

PAM을 사용하여 특정 명령어의 실행을 제어할 수 있습니다.

  1. PAM 설정 파일 생성
    /etc/security/exec-deny.conf 파일을 생성하고 다음 내용을 추가합니다.
    /usr/bin/sz
    /usr/bin/rz
  2. PAM 모듈 활성화
    /etc/pam.d/sshd 파일에 다음 줄을 추가합니다.
    session required pam_exec.so /etc/security/exec-deny.sh
  3. 스크립트 작성
    /etc/security/exec-deny.sh 파일을 생성하고 실행 권한을 부여한 후, 다음 스크립트를 추가합니다.
    #!/bin/bash
    
    DENY_LIST="/etc/security/exec-deny.conf"
    if grep -qx "$PAM_EXEC_ARG" "$DENY_LIST"; then
        echo "This command is not allowed."
        exit 1
    fi
  4. 스크립트 실행 권한 부여
    sudo chmod +x /etc/security/exec-deny.sh

방법 3: Restricted Shell 설정

제한된 쉘을 사용하여 특정 명령어의 실행을 차단할 수 있습니다.

  1. 사용자 쉘을 제한된 쉘로 변경
    사용자 계정을 rbash로 변경합니다.
    sudo usermod -s /bin/rbash username
  2. 허용된 명령어 설정
    제한된 쉘에서는 허용된 명령어만 사용할 수 있도록 환경을 설정합니다.

설정 적용 및 재시작

SSH 서버 설정을 변경한 후에는 SSH 데몬을 재시작하여 변경 사항을 적용합니다.

sudo systemctl restart sshd

위의 방법들을 사용하여 sshd에서 szrz 명령어의 실행을 효과적으로 제한할 수 있습니다. 시스템의 보안 정책과 요구 사항에 따라 적절한 방법을 선택하여 적용하십시오.

728x90

댓글