2017.03.15 3min read

중1때 랜섬웨어를 만들었다

CMD 배치파일로 Windows 비밀번호를 바꾸고 배경화면을 비트코인 계좌로 바꾸는 프로그램을 만들었다. 13살이었다.

13살 때 랜섬웨어를 만들었다. 물론 진짜 랜섬웨어는 아니었다. 파일을 암호화하는 것도 아니었고, 복호화 키를 가진 것도 아니었다. 그냥 CMD 배치파일이었다. 하지만 13살짜리한테는 그게 세상을 해킹한 느낌이었다.

사전이해

중학교 1학년이었다. 컴퓨터를 좋아했다. 게임도 했지만, 그보다는 “컴퓨터가 어떻게 돌아가는지"가 궁금했다. 왜 이 버튼을 누르면 이게 실행되는지. 왜 이 폴더는 삭제가 안 되는지. 왜 관리자 권한이라는 게 있는지.

그때 CMD를 알게 됐다. 검은 창. 거기에 뭔가를 치면 컴퓨터가 말을 듣는다. GUI에서는 할 수 없는 것들이 거기서는 됐다.

문제

CMD로 뭘 할 수 있는지 하나하나 실험했다. dir, cd, mkdir 같은 기본 명령어부터 시작해서, 어느 날 net user라는 명령어를 발견했다. Windows 사용자 계정의 비밀번호를 바꿀 수 있는 명령어였다.

순간 머릿속에서 뭔가가 연결됐다.

“이걸로 다른 사람 컴퓨터 비밀번호를 바꿔버리면 어떻게 되지?”

나쁜 의도는 아니었다. 순수한 호기심이었다. “이게 진짜 되나?” 하는.

핵심

배치파일 하나를 만들었다. .bat 파일이다. 실행하면 세 가지를 한다.

  1. net user — 현재 사용자의 비밀번호를 강제로 변경한다. 컴퓨터 소유자가 로그인할 수 없게 된다.
  2. reg add — 바탕화면 배경을 변경한다. 미리 준비한 이미지로. 그 이미지에는 비트코인 지갑 주소가 적혀 있었다. “비밀번호를 돌려받으려면 여기로 비트코인을 보내세요.”
  3. 파일 확장자를 .kimi로 전부 변경한다. 바탕화면에 있는 파일들의 확장자를 바꿔서, 열리지 않게 만든다. 물론 확장자만 바꾼 거라 다시 바꾸면 되지만, 모르는 사람은 당황한다.

이름을 “랜섬웨어"라고 붙였다. 실제 랜섬웨어가 하는 파일 암호화 같은 건 당연히 못 했다. 그건 암호학 지식이 필요한 건데, 13살 중학생한테 그런 건 없었다. 그냥 “컴퓨터를 못 쓰게 만들고, 돈을 요구하는 프로그램"이라는 컨셉만 따온 거였다.

접근

만드는 과정이 재밌었다. 문제를 하나씩 풀어가는 느낌이었다.

“비밀번호를 바꾸려면?” → net user %username% 새비밀번호

“배경화면을 바꾸려면?” → 레지스트리 키를 수정해야 한다. reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "경로\이미지.bmp" /f

“파일을 못 열게 하려면?” → ren *.* *.kimi로 확장자를 전부 바꾼다.

각각은 단순한 명령어다. 하지만 이걸 하나의 .bat 파일에 순서대로 넣으면, 실행 한 번에 컴퓨터가 “랜섬웨어에 감염된 것처럼” 보인다.

진짜 멋있다고 생각했다. 코드 몇 줄로 컴퓨터의 상태를 완전히 바꿀 수 있다는 사실이.

세부

완성된 배치파일을 네이버 카페에 올렸다. 보안 관련 카페였다. “제가 만든 랜섬웨어입니다"라는 제목으로. 당연히 반응은 엇갈렸다. “이건 랜섬웨어가 아니라 장난감이다"라는 댓글도 있었고, “중학생이 이런 걸 만들었다고?” 하는 반응도 있었다.

지금 생각하면 그건 랜섬웨어가 아니었다. 복호화 키도 없고, 실제 암호화도 안 하고, 네트워크 전파도 안 되니까. 하지만 그 “장난감"을 만드는 과정에서 나는 컴퓨터를 완전히 다른 눈으로 보게 됐다.

CMD 명령어 하나하나가 시스템의 어떤 부분을 건드리는지 이해하기 시작했다. 레지스트리가 뭔지 알게 됐다. 사용자 권한이라는 개념을 체감했다. “관리자 권한으로 실행"이 왜 필요한지 직접 경험했다.

그리고 보안이라는 분야가 있다는 걸 알게 됐다. 공격하는 쪽이 있으면 방어하는 쪽도 있다는 것. 시스템의 취약점을 찾는 것이 직업이 될 수 있다는 것.

영향

이 경험이 나한테 남긴 건 기술 지식이 아니었다. 관점의 전환이었다.

컴퓨터를 “사용하는 도구"로 보던 시선이, “제어할 수 있는 시스템"으로 바뀌었다. 화면에 보이는 게 전부가 아니라는 걸 알게 됐다. 그 뒤에 운영체제가 있고, 레지스트리가 있고, 프로세스가 있고, 네트워크가 있다는 걸.

이 시선이 없었으면 나중에 프로그래밍을 배울 때도, 투자를 할 때도, 서비스를 만들 때도 접근 방식이 달랐을 거다. “표면 뒤에 뭐가 있을까?“를 항상 먼저 생각하는 습관. 그게 여기서 시작됐다.

결과

13살짜리가 CMD로 만든 가짜 랜섬웨어. 기술적으로는 아무것도 아니었다. 하지만 그게 내 첫 번째 “만든 것"이었다. 내가 코드를 쓰고, 실행하고, 뭔가가 바뀌는 걸 본 첫 경험.

코드로 세상을 제어할 수 있다는 감각. 13살 때 그걸 한 번 느끼면, 안 잊어버린다.


지금은 랜섬웨어 대신 서비스를 만든다. 하지만 “시스템을 이해하고 제어한다"는 본질은 같다.

댓글