어느 날 갑자기 찾아온 AWS 요금 폭탄
월 평균 30만 원이던 AWS 요금이 어느 날 갑자기 300만 원으로 청구되었다면 어떻게 하시겠습니까? 실제로 많은 개발자들이 EC2 인스턴스가 암호화폐 채굴에 악용되거나 DDoS 공격의 경유지로 사용되면서 막대한 비용을 지불하게 됩니다.
2025년 현재, EC2 악성코드 감염 사례가 급증하고 있습니다. 특히 AI로 생성된 Koske 악성코드나 기존 백신으로 탐지가 불가능한 Plague 같은 신종 위협이 리눅스 서버를 노리고 있죠. GitHub에 실수로 올린 AWS 액세스 키 하나가 전체 인프라를 위험에 빠뜨릴 수 있습니다.
이 글에서는 EC2 악성코드 탐지를 위해 반드시 확인해야 할 체크리스트와 구체적인 대응 방법을 단계별로 알려드리겠습니다. 지금 바로 여러분의 서버를 점검해보세요.
목차
- EC2 악성코드 감염 징후 확인하기
- 리눅스 명령어로 의심 프로세스 찾기
- AWS 보안 도구로 정밀 진단하기
- 침해 사고 발견 시 초동 대응
1. EC2 악성코드 감염 징후 확인하기
EC2 인스턴스가 악성코드에 감염되었을 때 나타나는 대표적인 징후를 먼저 파악해야 합니다.
CPU 사용률 급증
정상적인 서비스 부하 없이 CPU 사용률이 80% 이상 유지된다면 암호화폐 채굴 악성코드를 의심해볼 수 있습니다. CloudWatch에서 지난 7일간의 CPU 사용 추이를 확인해보세요. 갑작스러운 변화가 있다면 주의가 필요합니다.
알 수 없는 아웃바운드 트래픽
VPC Flow Logs나 CloudWatch 지표에서 평소보다 네트워크 트래픽이 급증했다면 데이터 유출이나 DDoS 공격 참여를 의심할 수 있습니다. 특히 중국, 러시아 등 평소 접속하지 않는 지역으로의 트래픽은 위험 신호입니다.
비정상적인 로그인 시도
/var/log/auth.log 파일에서 무작위 대입 공격(Brute Force) 흔적을 확인할 수 있습니다. 하루에 수백 건의 실패한 로그인 시도가 기록되어 있다면 공격을 받고 있을 가능성이 높습니다.
2. 리눅스 명령어로 의심 프로세스 찾기
EC2 인스턴스에 SSH로 접속하여 직접 악성코드 흔적을 찾아보는 방법입니다.
실행 중인 프로세스 확인
# CPU 사용률 높은 프로세스 확인
top -b -n 1 | head -20
# 의심스러운 프로세스 찾기
ps aux | grep -E '(xmrig|minerd|cpuminer)'
암호화폐 채굴 프로그램은 xmrig, minerd 같은 이름을 사용하는 경우가 많습니다. 또한 정상 프로세스처럼 위장하기 위해 [kworker]나 systemd 같은 이름을 사용하기도 합니다.
네트워크 연결 상태 점검
# 현재 네트워크 연결 확인
netstat -tulpn | grep ESTABLISHED
# 외부로 나가는 연결 확인
ss -o state established '( dport = :* or sport = :* )'
알 수 없는 IP 주소로의 연결이 있다면 해당 IP를 VirusTotal이나 AbuseIPDB에서 검색해보세요. 악성 IP로 등록되어 있을 가능성이 있습니다.
최근 변경된 파일 찾기
# 최근 24시간 내 변경된 파일
find / -mtime -1 -type f 2>/dev/null | head -50
# /tmp, /var/tmp 디렉터리 점검
ls -la /tmp /var/tmp
악성코드는 주로 /tmp, /var/tmp, /dev/shm 디렉터리에 숨어있는 경우가 많습니다.
3. AWS 보안 도구로 정밀 진단하기
GuardDuty 활용
Amazon GuardDuty는 악의적인 활동과 무단 동작을 지속적으로 모니터링하는 AWS 보안 서비스입니다. EC2 악성코드 탐지에 특화된 기능을 제공합니다.
주요 탐지 항목
- UnauthorizedAccess:EC2/SSHBruteForce - SSH 무작위 대입 공격
- CryptoCurrency:EC2/BitcoinTool - 암호화폐 채굴 활동
- Backdoor:EC2/DenialOfService - DDoS 공격 참여
GuardDuty 콘솔에서 '조사 결과' 탭을 확인하면 위험도에 따라 High, Medium, Low로 분류된 보안 위협을 볼 수 있습니다.
Amazon Inspector 사용
Inspector는 EC2 인스턴스의 소프트웨어 취약점을 자동으로 스캔합니다. 패치되지 않은 보안 취약점이 악성코드 침투 경로가 될 수 있으므로 정기적인 점검이 필요합니다.
점검 항목
- CVE 기반 취약점 탐지
- 운영체제 패치 상태
- 네트워크 도달 가능성 분석
CloudTrail 로그 분석
CloudTrail에서 최근 EC2 관련 API 호출 내역을 확인하세요. 승인하지 않은 인스턴스 생성이나 보안 그룹 변경 기록이 있다면 계정이 침해되었을 가능성이 있습니다.
# AWS CLI로 최근 이벤트 확인
aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::EC2::Instance --max-results 50
4. 침해 사고 발견 시 초동 대응
즉시 취해야 할 조치
악성코드 감염이 확실하다면 다음 순서로 대응하세요.
1단계: 네트워크 격리 의심되는 인스턴스의 보안 그룹을 변경하여 외부 통신을 차단합니다. 새로운 격리 보안 그룹을 만들어 특정 관리 IP에서만 SSH 접속을 허용하세요.
2단계: 스냅샷 생성 포렌식 분석을 위해 현재 상태의 EBS 스냅샷을 생성합니다. 이후 복구나 법적 대응 시 증거 자료로 활용할 수 있습니다.
3단계: AWS 신고 AWS Support Center를 통해 침해 사고를 신고하세요. 악의적인 활동으로 인한 비용을 감면받을 수도 있습니다.
재발 방지 대책
- MFA 활성화: 모든 IAM 사용자에 다중 인증 설정
- 액세스 키 관리: GitHub에 키 노출 방지, 정기적 로테이션
- 보안 패치: 운영체제와 애플리케이션 최신 상태 유지
- Fail2ban 설치: 무작위 로그인 시도 자동 차단
마무리
EC2 악성코드 탐지는 조기 발견이 핵심입니다. 평소 CloudWatch 지표를 주기적으로 확인하고, GuardDuty 같은 AWS 보안 도구를 활성화해두는 것만으로도 큰 피해를 예방할 수 있습니다.
오늘 소개한 체크리스트로 지금 바로 여러분의 EC2 인스턴스를 점검해보세요. CPU 사용률, 프로세스 목록, 네트워크 연결 상태를 확인하는 데 5분이면 충분합니다. 작은 징후를 놓치지 않는 것이 수백만 원의 요금 폭탄을 막는 가장 확실한 방법입니다.
서버 보안은 한 번의 설정으로 끝나는 것이 아니라 지속적인 모니터링과 관리가 필요합니다. 정기적인 점검 습관을 들이시고, 의심스러운 활동이 포착되면 즉시 조치를 취하시기 바랍니다.
댓글