컴퓨터 일반 5강. 정보 보안과 악성 코드
백신을 깔았는데도 뚫리는 이유는, 공격이 프로그램이 아니라 사람을 노리기 때문입니다.
풀고 시작
셋을 가르는 기준은 번지는 방식입니다
악성 코드 이름이 헷갈리는 이유는 셋을 모두 "바이러스"라고 부르는 습관 때문입니다. 실제로는 번지는 방식으로 나뉩니다.
바이러스(virus) 는 숙주가 필요합니다. 다른 실행 파일이나 문서에 자기를 끼워 넣고, 그 파일이 실행될 때 함께 깨어나 다음 파일로 옮겨 갑니다. 생물 바이러스가 세포에 기생하는 것과 같아서 붙은 이름이죠.
웜(worm) 은 숙주가 필요 없습니다. 스스로가 온전한 프로그램이고 네트워크를 타고 자기를 복제해 퍼집니다. 1988년 모리스 웜은 인터넷 초기에 수천 대를 마비시켰는데, 만든 사람이 피해를 의도하지 않았는데도 복제 속도 계산을 잘못해 벌어진 일이었습니다. 웜이 무서운 이유는 사람이 아무것도 클릭하지 않아도 번진다는 점입니다.
트로이 목마(trojan horse) 는 번지지 않습니다. 대신 속입니다. 무료 유틸리티나 게임 치트로 위장해 사용자가 직접 설치하게 만들고, 뒤에서 문을 열어 둡니다. 스스로 복제하지 않으므로 확산은 느리지만, 사용자가 제 손으로 들여놓기 때문에 방어가 어렵습니다.
| 숙주 필요 | 자기 복제 | 대표적 확산 경로 | |
|---|---|---|---|
| 바이러스 | 필요합니다 | 합니다 | 감염된 파일의 실행 |
| 웜 | 필요 없습니다 | 합니다 | 네트워크, 메일 |
| 트로이 목마 | 필요 없습니다 | 하지 않습니다 | 사용자의 자발적 설치 |
여기에 랜섬웨어(ransomware) 가 더해집니다. 파일을 암호화해 인질로 잡고 대가를 요구하죠. 백업이 유일한 확실한 대비책이고, 그 백업도 같은 네트워크에 항상 연결돼 있으면 함께 암호화될 수 있습니다.
사람을 속이는 공격에는 백신이 듣지 않습니다
기술이 아니라 사람의 심리를 노리는 공격을 사회 공학(social engineering) 이라 합니다.
피싱(phishing) 은 은행이나 기관을 사칭한 가짜 사이트로 유인해 아이디와 비밀번호를 입력하게 합니다. 파밍(pharming) 은 한 걸음 더 나갑니다. 사용자가 주소를 정확히 입력해도 가짜 사이트로 끌려갑니다. DNS 정보나 컴퓨터의 hosts 파일을 건드려 이름 번역 자체를 비틀기 때문입니다. 주소창을 확인하라는 조언이 파밍 앞에서는 소용없는 이유가 이것입니다.
스미싱(smishing) 은 문자메시지(SMS)를 미끼로 쓰는 피싱이고, 키로거(key logger) 는 자판 입력을 몰래 기록해 비밀번호를 빼냅니다. 스니핑(sniffing) 은 오가는 데이터를 엿듣는 것이고, 스푸핑(spoofing) 은 주소나 신원을 속여 신뢰를 얻는 것입니다. 엿듣기와 속이기, 이 둘의 차이로 기억하시면 헷갈리지 않습니다.
서비스 거부 공격(DoS) 은 정보를 훔치는 대신 서버가 감당 못 할 만큼 요청을 퍼부어 정상 이용을 막습니다. 여러 대를 동원하면 분산 서비스 거부(DDoS) 가 됩니다.
방화벽은 문지기이지 의사가 아닙니다
방화벽(firewall) 은 안팎을 오가는 통신을 규칙에 따라 통과시키거나 막는 문지기입니다. 바깥에서 들어오는 허가되지 않은 접근을 차단하는 것이 주된 일이죠. 그런데 여기 중요한 한계가 있습니다. 이미 안에 들어와 있는 악성 코드나, 사용자가 스스로 허락해 들여놓은 것은 막지 못합니다. 문지기는 문을 지킬 뿐 이미 집 안에 있는 도둑은 잡지 못하니까요. 그래서 방화벽과 백신은 서로를 대신하지 못합니다.
암호화에도 두 갈래가 있습니다. 비밀키(대칭키) 방식은 잠글 때와 풀 때 같은 열쇠를 쓰므로 빠르지만, 그 열쇠를 상대에게 안전하게 건네는 일이 어렵습니다. 공개키(비대칭키) 방식은 열쇠가 한 쌍입니다. 누구나 가질 수 있는 공개키로 잠그면 짝이 되는 개인키로만 풀립니다. 열쇠를 미리 나눠 갖지 않아도 되는 대신 속도가 느립니다. 그래서 현실에서는 둘을 섞어 씁니다. 공개키로 비밀키를 안전하게 전달하고, 실제 데이터는 빠른 비밀키로 주고받죠. HTTPS가 정확히 그렇게 동작합니다.
인출 문제
생각해볼 질문 (정답 없음)
- 사회 공학 공격이 기술적 방어를 우회한다면, 보안 교육은 어디까지 개인의 책임일까요. 속은 사람을 탓하는 것과 속을 수 있는 시스템을 탓하는 것 중 어느 쪽이 문제를 줄일지 생각해 보세요.