보안 관련 용어 정리
최근 보안사고들이 자주 일어나는데 이와 관련해서 알아두면 좋은 보안 관련 용어들을 정리해보았습니다.
보안 관련 뉴스를 볼 때 도움이 되었으면 좋겠습니다.
악성코드
컴퓨터(혹은 스마트폰)에서 돌아가는 프로그램은 모두 코드로 작성됩니다. 이 중에서 악의적인 목적을 가지고 작성된 코드(로 만들어진 프로그램)를 악성코드라고 합니다.
바이러스, 웜, 트로이목마, 스파이웨어, 애드웨어 모두 다 악성코드에 포함됩니다.
스파이웨어
악성코드의 일종으로 현실의 스파이처럼 사용자 몰래 정보를 수집해 해커에게 보내는 프로그램입니다.
수집하는 정보의 종류는 개인정보(이메일, 전화번호, 주소), 패스워드, 신용카드 정보, 사진 등 다양합니다.
APT (Advanced Persistent Threat)
APT는 Advanced Persistent Threat의 약자로 특정한 공격 기술이 아니며 전문가들도 이 용어에 대해 정의가 모호하고 구체적이지 않다, 마케팅 용어가 아니냐고 말합니다.
하지만 간단하게 설명하자면 “아무나 걸려라” 하고 뿌리는 악성코드와는 다르게 특정한 목표(주로 기업, 공공기관 등)를 정해두고 집요하게 분석하고 공격하는 것을 의미합니다.
SQL Injection
SQL은 Structured Query Language의 약자로 데이터베이스와 통신하기 위한 언어입니다.
일반적으로 웹 애플리케이션에서 사용자 입력에 맞는 데이터를 보여주기 위해 SQL 쿼리를 사용합니다.
간단하게 예를 들면 사용자가 검색어로 코끼리
를 입력하면 서버는 다음과 비슷한 SQL 쿼리를 만들어 데이터베이스에서 정보를 가져옵니다
'블로그 글' 저장소에서 '글 제목', '글 내용', '작성자'를 가져오는데 '글 제목'에 '코끼리'가 포함된 것들을 가져와줘
하지만 사용자가 코끼리
대신에 코끼리'가 들어가든 말든 관리자만 볼 수 있는 글을 가져와줘. 그리고 이 뒤로 오는 말은 무시해.
라고 입력하면 서버는 다음과 같은 SQL 쿼리를 만들어 데이터베이스에 요청을 보냅니다.
'블로그 글' 저장소에서 '글 제목', '글 내용', '작성자'를 가져오는데 '글 제목'에 '코끼리'가 들어가든 말든 관리자만 볼 수 있는 글을 가져와줘. 그리고 이 뒤로 오는 말은 무시해. '가 포함된 것들을 가져와줘
위와 같이 데이터베이스에 접근하는 요청에 임의의 명령을 끼워넣는 것을 SQL Injection이라고 합니다. 경우에 따라 데이터를 가져올 수도 있고, 데이터를 수정하거나 삭제할 수도 있습니다.
백도어
미리 설치해 둔 악성코드로 시스템에 쉽게 접근할 수 있는 경로를 만들어 두는 것을 백도어라고 합니다.
서버를 호텔이라고 한다면 정문을 통해 들어가 직원들만 출입할 수 있는 구역에 들어가는 과정은 당연히 어려울 것입니다. 하지만 한 번 들어가는데 성공했다면 쓰레기를 버리는 용도의 문을 항상 열어놓도록 바꿔놓고 다음부터는 이 문을 통해 복잡한 과정 없이 언제나 쉽게 들어갈 수 있을 것입니다. 백도어를 열기 위해 처음 한 번은 정면돌파를 해야 하며, 백도어를 여는 방식도 여러가지로 다양합니다.
루트킷
시스템의 관리자 권한을 가지며 사용자에게는 보이지 않는 악성코드입니다. 주로 백도어로 사용됩니다.
랜섬웨어
랜섬웨어는 중요한 정보를 인질(Ransom) 삼아 몸값을 요구하는 악성코드입니다. 주로 암호화를 이용하는데 해커가 모든 파일을 저장하기는 경제적으로 말이 안 되고 들키기도 쉽기 때문에 파일들을 암호화 하여 못 쓰게 만든 후 복호화 키만 해커가 가지고 있습니다. 피해자는 해커에게 몸값을 지불하면 복호화 키를 받아 파일을 복구할 수 있지만 지불한다고 해서 복호화 키를 받을 수 있다는 보장은 없습니다.
예방 방법으로는 주기적인 백업을 통해 랜섬웨어에 걸리더라도 백업을 통해 복구할 수 있도록 하는 것입니다. 다만 요즘은 APT와 결합한 형태가 많기 때문에 피해자가 기업인 경우엔 백업까지 못 쓰게 만들 수 있는 경우에만 랜섬웨어를 이용하기도 합니다.
DDoS (Distributed Denial of Service)
일단 DoS의 개념부터 알아야 하는데, DoS는 “서비스 거부 공격”이라고도 불리며 서비스를 다른 사람도 못 쓰게 만드는 공격을 말합니다.
예를 들어 편의점에 가서 혼자 계산대에서 시간을 끌고 있으면 다른 손님이 계산을 할 수 없게 됩니다. 이것이 DoS입니다.
DDoS는 “분산 서비스 거부 공격”이라고도 불리며, 여러 대의 컴퓨터를 이용합니다. 편의점 예시를 다시 가져오면 사람 30명을 시켜서 한 편의점에서 사탕 하나만 계속 구입하게 하는 것입니다. 이러면 다른 일반 손님들의 계산이 밀리며 사탕은 소진되어 팔 수 없기도 합니다. 여러 대의 컴퓨터를 동원하기 위해 좀비PC를 이용하는 경우가 많습니다.
피싱 (Phishing)
낚시하듯이 피해자를 속여서 개인정보를 빼내거나 금전적인 이득을 취하는 행위입니다. 전화를 이용하면 보이스피싱, SMS를 이용하면 스미싱이라고 불리기도 합니다. 특정 타겟을 정해두고 노린다면 스피어피싱이라고도 부릅니다.
모르는 번호에서 오는 전화나 이메일은 믿지 말고 공식 채널을 통해 확인해보는 습관이 중요합니다.
뉴스에 나오는 문장들 해석하기
단어만 안다고 뉴스를 이해할 수 있는 것은 아닙니다. 뉴스에서도 외교적 돌려말하기를 사용하기도 하고 기업들은 피해사실을 고의로 축소하고 왜곡하기도 합니다. 이런저런 예시를 들어보겠습니다.
원인 파악 불명
“아직” 원인을 모르겠다는 뜻입니다. 하지만 이미 원인을 알고 있는데 공개하면 자신들이 피해를 볼까봐 아직 모른다고 하는 경우도 있습니다. 예를 들어 서버가 다운됐는데 “원인 파악 중”, “원인 파악 불명”, “DDoS로 추정” 등으로 발표한다면 실제로는 DDoS(서비스 제공만 못하고 다른 피해는 없음)가 아니라 데이터가 유출되었거나 유실되었을 가능성도 보아야 합니다.
개인정보가 유출된 정황은 없었다
이것 또한 “아직” 발견 못 했다는 뜻입니다. 해킹을 당했는지도 방금 알았는데 개인정보가 유출된 증거는 “아직” 발견을 못 했다는 뜻입니다. 원래 있다는 것은 증명하기 쉽지만 없다는 것은 증명하기 어렵습니다. 친구가 집에 놀러와서 자고 갔는데 내가 자는 모습을 그 친구가 찍었을지 아닌지는 그 친구가 사진을 올리기 전에는 집을 아무리 뒤져봐도 알 수 없는 것입니다.
DDoS 같은 공격이었다면 개인정보 유출이 없을 가능성이 높지만 랜섬웨어, 백도어, 악성코드 등의 단어가 나왔다면 해커는 이미 집에 들어왔던 것이나 다름이 없으니 개인정보 유출이 없을 가능성은 굉장히 낮습니다.
피해사실 신고 의무
기업은 보안사고가 있었을 때 24시간 이내에 신고하고 사용자들에게 알릴 법적 의무가 있습니다. 보안사고마다 매번 나오는 말이지만 실제로는 24시간 이내에 알렸을 때의 경제적 피해보다 알리지 않고 과태료를 내는 편이 더 저렴하기 때문에 지켜지는 경우가 드뭅니다.
결론
큰 기업일수록 수많은 해커들의 타겟이 되고 창과 방패의 싸움이기 때문에 보안사고는 언제든 발생합니다. 다만 그동안 보안에 투자했으면 막았을 것을 못 막았거나, 정말 어쩔 수 없이 당했어도 사후 대처가 엉망인 경우를 보는 것이 좋습니다.
정말 어이 없는 이유로 사고가 발생했거나, 피해사실을 은폐하거나 왜곡하는 경우, 본인들 잘못을 인정하지 않고 피해를 고객에게 떠넘기는 경우 등의 사례에 집중하는 것이 좋습니다.
또한 “다른 곳도 어차피 똑같아”라는 생각은 “이렇게 대충 운영해도 된다”가 됩니다. 어이 없는 대처를 할 때마다 “이렇게 운영하다가는 고객을 다 잃겠구나”라는 생각을 심어줄 수 있도록 하는 것이 개인에게는 더 좋은 방법이라고 생각합니다.