적지 않은 번호 3,026개 — 나머지는 전부 본 것이었다
10월 4일 허니팟 두 대에 남은 파일 9종은 모두 전에 본 해시였습니다. 42일 전과 32초·명령 48개·파일 12개까지 같은 접속도 다시 찍혔습니다. 기록을 깬 숫자는 하나입니다. 누군가의 진짜 계정일 수 있어 값을 적지 않은 비밀번호 조합이 3,026종으로, 지금까지 중 가장 많았습니다.

학교 복도에 번호 자물쇠가 달린 사물함이 줄지어 있다고 생각해 봅시다. 쉬는 시간마다 누군가 지나가며 남의 자물쇠 다이얼을 돌려 봅니다. 대부분은 0000이나 1234를 돌립니다. 누구나 먼저 떠올리는 번호라서요.
그런데 가끔 이상한 번호를 돌리는 사람이 있습니다. 0000도 1234도 아닌, 어딘가 구체적인 번호입니다. 그게 이 반 누군가의 진짜 사물함 번호라면 어떨까요? 그 번호를 복도 게시판에 붙이면 안 되겠죠.
오늘 이야기는 그 게시판에 무엇을 붙이고 무엇을 붙이지 않았는지에 대한 겁니다. 어제는 붙이지 않은 번호가 3,026개였습니다.
우리 사물함은 일부러 쉬운 번호로 잠가 둔 미끼입니다
사실 우리는 허니팟을 운영합니다. 허니팟은 일부러 허술하게 열어 두고, 누가 와서 무엇을 하는지 지켜보는 미끼 서버입니다. 쉬운 번호로 잠가 두고 CCTV를 달아 둔 빈 사물함이라고 보면 됩니다. 아래 이야기는 실제 피해가 아니라 관찰 기록입니다.
사실 사물함은 두 칸입니다. 첫 번째(센서 01)는 번호가 맞으면 실제로 열립니다. 연 사람이 안에서 무슨 명령을 쳤는지까지 녹화됩니다. 두 번째(센서 02)는 절대 열리지 않습니다. 누가 와서 다이얼을 어떻게 돌렸는지만 적습니다.
어제 하루 전체
먼저 첫 번째 사물함 앞이 얼마나 붐볐는지부터 봅니다. 오른쪽 칸의 ’몇 초에 한 번’을 보세요.
| 항목 | 10월 4일 | 견줄 것 |
|---|---|---|
| 세션(접속 한 번) | 5,329건 | 약 16초에 한 번 |
| 고유 출발지 | 216곳 | 한 곳이 평균 약 24.7번 |
| 로그인 시도 | 5,020회 | 약 17초에 한 번. 1분이면 세 번 넘게 다이얼을 돌린 셈 |
| 친 명령 | 11,394개 | 약 7.6초에 하나 |
| 포트 2222 (SSH) | 3,559세션 | 전체의 약 67% |
| 포트 2223 (텔넷) | 1,768세션 | 약 33%. 그런데 눈여겨본 접속 다섯 건은 전부 텔넷 |
사실 SSH와 텔넷은 둘 다 멀리 있는 컴퓨터에 들어가 명령을 치는 방법입니다. SSH는 오가는 내용을 암호로 감쌉니다. 텔넷은 감싸지 않는 오래된 방식입니다. 공유기나 카메라 같은 작은 기기가 아직 텔넷 문을 열어 두는 경우가 있습니다.
사실 명령 11,394개 중 “무엇을 하려던 건지” 분류가 붙은 건 3,516개입니다. 약 30.9%, 열 개 중 세 개꼴입니다.
| 무엇을 하려 했나 | 횟수 |
|---|---|
| 정찰 — 시스템 살펴보기 | 3,250회 |
| 실행 권한 부여 | 81회 |
| 파일 다운로드 | 67회 |
| 다운로드 후 실행 | 49회 |
| 흔적 삭제 | 35회 |
| 지속성 — SSH 키 심기 | 34회 |
사실 정찰이 압도적입니다. 사물함을 열고 나서 제일 먼저 하는 일은 안을 둘러보는 것이었습니다. 나머지 다섯 줄을 다 더해도 정찰의 10분의 1이 안 됩니다.
게시판에 붙인 번호, 붙이지 않은 번호
사실 어제 시도된 아이디·비밀번호 조합 중 이 글에 그대로 옮기는 건 20종입니다. 우리 규칙은 하나입니다. 서로 다른 IP 세 곳 이상에서 똑같이 돌려 본 조합만 적습니다. 이 기준에 못 미친 조합은 개수만 셉니다. 어제 그 수가 3,026종이었습니다.
사실 3,026종은 우리가 쌓아 둔 브리프 32개 중 가장 많은 값입니다. 이전 최대는 9월 7일의 2,527종이었습니다. 약 1.2배입니다. 게시판에 붙인 번호 하나마다 붙이지 않은 번호가 150개쯤 있었던 셈입니다.
추정 한두 곳에서만 나온 조합은 어디선가 새어 나간 누군가의 진짜 계정일 수 있습니다. 복도에서 딱 한 사람만 돌려 본 구체적인 번호와 같습니다. 그래서 값은 적지 않습니다. 반대로 아래 20종은 여러 곳이 똑같이 들고 오는 번호입니다. 누구의 것도 아닌 공장 기본값입니다. 첫 줄 숫자를 보세요.
| 아이디 | 비밀번호 | 서로 다른 출발지 |
|---|---|---|
| 345gs5662d34 | 345gs5662d34 | 33곳 |
| admin | admin | 12곳 |
| root | 3245gs5662d34 | 10곳 |
| root | 12345 | 7곳 |
| root | admin | 6곳 |
| root | 123456 | 6곳 |
| root | root | 6곳 |
| root | 1234 | 6곳 |
| support | support | 5곳 |
| root | (빈칸) | 4곳 |
| admin | (빈칸) | 4곳 |
| admin | password | 4곳 |
| user | user | 4곳 |
| admin | admin1234 | 4곳 |
| admin | 123456 | 4곳 |
| guest | guest | 4곳 |
| root | Aa123456 | 4곳 |
| root | xc3511 | 3곳 |
| root | juantech | 3곳 |
| root | default | 3곳 |
사실 ’(빈칸)’은 비밀번호 없이 그냥 들어가 보는 시도입니다. 자물쇠를 돌리지도 않고 문을 당겨 보는 것과 같습니다. 이런 시도도 4곳에서 왔습니다.
사실 왜 오늘 3,026종으로 늘었는지는 모릅니다. 상대가 쓰는 번호 목록이 바뀌었는지, 우리 집계 방식이 바뀌었는지 데이터가 구분해 주지 않습니다.
33명이 한 번씩, 그리고 똑같은 열쇠
사실
표 첫 줄의 345gs5662d34 / 345gs5662d34는 서로 다른 IP 33곳에서 딱 33번 시도됐습니다. 한 곳에 한 번씩입니다.
사실
같은 날 389바이트짜리 SSH 공개키 파일도 서로 다른 출처 33곳에서 33번 남았습니다. 크기는 영어 글자 389자, 짧은 메모 한 장 분량입니다. SSH 공개키를 심는다는 건 이런 뜻입니다. 사물함의 “이 열쇠로도 열어 줘” 명단에 자기 열쇠를 몰래 올려 두는 겁니다. 그러면 나중에 다이얼 번호를 바꿔도 그 열쇠로 다시 열 수 있습니다. 서버에서는 이 명단 파일을 authorized_keys(허용된 열쇠 목록)라고 부릅니다. 이 공개키는 8월 16일 브리프부터 계속 나온 파일입니다.
사실
숫자 33은 한 군데 더 나옵니다. SSH로 접속하는 프로그램은 접속할 때 자기 설정 조합을 보여 줍니다. 그걸로 만든 값을 지문이라고 합니다. 지문 f555226d…(SSH-2.0-libssh_0.9.6)가 어제 IP 33곳에서 보였습니다. libssh는 SSH 접속 프로그램을 만들 때 가져다 쓰는 부품 묶음입니다. ’SSH 키 심기’로 분류된 행동은 34회였습니다.
추정 비밀번호 조합 33곳, 열쇠 33곳, 지문 33곳. 같은 도구가 “한 곳에서 한 번 로그인하고, 같은 열쇠를 명단에 올린다”를 돌린 것으로 보입니다. 다만 세 숫자의 33곳이 같은 33곳인지는 확인할 수 없습니다. 출발지별로 이어 주는 정보가 데이터에 없습니다.
사실 이 지문 묶음은 지금까지 누적 693곳으로, 52개 묶음 중 가장 큽니다. 다만 ‘누적’ 값이 줄어든 적이 있어서 정확한 증가분으로 읽으면 안 됩니다. 그리고 같은 지문은 같은 도구라는 뜻일 뿐 같은 사람이나 조직이라는 뜻이 아닙니다. 같은 libssh 버전을 쓰는 관계없는 사람도 같은 값을 냅니다.
추정
여기서 중요한 건 “다섯 번 틀리면 잠금” 같은 규칙입니다. 한 곳이 한 번씩만 돌렸다면 이 규칙은 한 번도 울리지 않았을 겁니다. 반대로 root/xc3511은 3곳에서 87번, 한 곳당 29번 돌렸습니다. 이런 쪽은 잠금 규칙에 잘 걸립니다.
42일 전 녹화와 겹쳐 보이는 영상
이제 실제로 사물함을 연 다섯 건을 봅니다. 다섯 건 모두 텔넷이었고, 모두 로그인에 성공했습니다.
사실
그중 가장 많은 일을 한 건 ATK-F2B80A(121.161.x.x)입니다. ATK-로 시작하는 이름은 우리가 출발지마다 붙이는 별칭입니다. 이 접속은 약 32.5초 동안 명령 48개를 쳤습니다. 1초에 명령 1.5개꼴입니다. 사람이 손으로 치기는 어려운 속도입니다. 사물함 안에 넣어 둔 파일은 12개입니다.
사실 그런데 이 별칭은 8월 23일 브리프에도 있습니다. 두 날을 나란히 놓으면 이렇습니다.
| 8월 23일 | 10월 4일 | |
|---|---|---|
| 시작 시각 (UTC) | 02:13:52 | 12:35:51 |
| 머문 시간 | 약 32.6초 | 약 32.5초 |
| 명령 | 48개 | 48개 |
| 넣어 둔 파일 | 12개 | 12개 |
| 기록 촘촘함 | 43 | 43 |
| 행동 분류 | 없음 | 없음 |
| 파일 내용 | 1바이트 빈 파일 11개 + 202바이트 스크립트 1개 | 같은 해시, 같은 구성 |
사실 42일이 지났습니다. 바뀐 건 시작 시각뿐입니다. 머문 시간은 0.1초 차이입니다. CCTV 영상 두 개를 겹쳐 틀면 거의 그대로 포개지는 셈입니다.
사실 사물함에 넣은 12개 중 11개는 1바이트짜리 빈 파일입니다. 글자 딱 하나 크기입니다. 이 빈 파일은 어제 모두 22번 나왔고, 8월 17일부터 반복됐습니다. 나머지 1개는 202바이트짜리 셸 스크립트입니다. 셸 스크립트는 명령 여러 줄을 한 파일에 모아 둔 쪽지입니다. 202바이트면 영어 글자 202자, 문자 메시지 두어 줄 길이입니다. 이 쪽지는 8월 21일·8월 23일·9월 6일에 이어 네 번째로 나왔습니다.
추정 별칭이 같다고 같은 사람이 다시 온 건 아닙니다. 별칭은 출발지가 이어지는지 보는 장치일 뿐입니다. 같은 자동화 프로그램이 같은 주소에서 다시 돌았다고 보는 편이 데이터에 맞습니다. 자동 프로그램은 날짜를 따지지 않습니다. 같은 사물함 앞에 서면 같은 순서로 같은 일을 합니다.
사실
판박이는 하나 더 있습니다. ATK-2CB5A2(58.72.x.x)는 약 17.7초 동안 명령 20개를 치고 파일 11개를 남겼습니다. 기록 촘촘함은 40입니다. 8월 29일 브리프에 같은 별칭이 명령 20개·파일 11개·약 18초·40으로 남아 있습니다. 36일 만입니다.
사실
ATK-50E6EA(45.238.x.x)는 어제 행동 분류가 가장 많이 붙은 접속입니다. 정찰·파일 다운로드·실행 권한 부여·다운로드 후 실행·SSH 키 심기, 다섯 가지입니다. 명령은 17개였고 남긴 파일은 0개입니다. 이 모양(명령 17·분류 5·파일 0·촘촘함 17)은 8월 18일~23일에 서로 다른 별칭으로 여섯 번 기록된 것과 같습니다.
사실
ATK-7FD4FE(112.46.x.x)는 5.0초 만에 명령 20개를 치고 9바이트짜리 글자 파일 두 개를 남겼습니다. 9바이트는 영어 단어 하나 길이입니다. 이 두 파일은 8월 21일·23일·28일·9월 1일에도 짝으로 나왔습니다. 그때는 다른 별칭이었습니다.
사실
ATK-677233(117.216.x.x)는 약 86.2초 동안 명령 31개를 쳤습니다. 다운로드하려는 행동이 분류됐는데 남은 파일은 0개입니다.
시간 순서로 늘어놓으면
어제를 시간 순서로 늘어놓으면 이렇습니다. 시각은 한국 시간이고, 괄호 안은 세계 표준시(UTC)입니다. ‘아카이브 대조’ 줄에서 8월 23일 숫자와 10월 4일 숫자를 맞춰 보세요.
- 사실 ATK-677233(117.216.x.x) 텔넷 로그인 성공. 약 86.2초 · 명령 31개 · 행동 분류 3종('파일 다운로드' · '실행 권한 부여' · '다운로드 후 실행') · 다운로드 0 · 기록 촘촘함 13
- 추정 다운로드 행동이 분류됐는데 저장된 파일은 0개다. 내려받기에 실패했는지, 분류기만 반응했는지는 구분할 수 없다
- 사실 ATK-2CB5A2(58.72.x.x) 텔넷 로그인 성공. 약 17.7초 · 명령 20개 · 다운로드 11건 · 행동 분류 없음 · 기록 촘촘함 40. 1바이트 빈 파일(01ba4719…). 8/29 에 같은 별칭이 명령 20 · 파일 11 · 18초 · 40 으로 기록됨. 36일 만
- 사실 ATK-7FD4FE(112.46.x.x) 텔넷 로그인 성공. 약 5.0초 · 명령 20개 · 다운로드 2건 · 행동 분류 '실행 권한 부여' · '파일 다운로드'. 9바이트 ASCII 텍스트 두 개(a9b1c85a… · 1193dde1…). 8/21 · 8/23 · 8/28 · 9/1 에도 짝으로 나왔고 그때는 다른 별칭
- 사실 ATK-50E6EA(45.238.x.x) 텔넷 로그인 성공. 약 62.4초 · 명령 17개 · 행동 분류 5종(오늘 최다) · 다운로드 0 · 기록 촘촘함 17. 8/18~8/23 에 서로 다른 별칭으로 여섯 번 기록된 모양과 같다
- 추정 행동 분류에는 순서 정보가 없다. 정찰 → 다운로드 → 실행 권한 → 지속성 순서로 일어났다고 쓸 수 없다. 다섯 가지가 '관측됐다'는 것까지만 말할 수 있다
- 사실 ATK-F2B80A(121.161.x.x) 텔넷 로그인 성공. 약 32.5초 · 명령 48개(오늘 최다) · 다운로드 12건(오늘 최다) · 기록 촘촘함 43(오늘 최고) · 행동 분류 없음. 1바이트 빈 파일(01ba4719…) 11건 + 202바이트 POSIX 셸 스크립트(0c99433c…) 1건
- 사실 8/23 의 ATK-F2B80A(121.161.x.x)는 02:13:52Z~02:14:24Z · 약 32.6초 · 명령 48 · 다운로드 12 · 촘촘함 43 · 분류 0개. 해시도 01ba4719… 11건 + 0c99433c… 1건으로 같다. 시작 시각만 바뀌었고 길이는 0.1초 차이. 0c99433c… 는 8/21(ATK-792ADF) · 8/23(ATK-F2B80A) · 9/6(ATK-60E535)에 이어 네 번째
- 추정 별칭은 출발지가 이어지는지 보는 장치일 뿐이다. 같은 사람이 다시 왔다는 뜻이 아니다. 같은 자동화 스크립트가 같은 주소에서 다시 돌았다고 보는 편이 데이터에 맞다
- 사실 389바이트 OpenSSH RSA 공개키(a8460f44…)가 서로 다른 출처 33곳에서 33회. 8/16 부터 반복. 345gs5662d34 / 345gs5662d34 조합이 IP 33곳에서 33회. SSH 지문 f555226d…(SSH-2.0-libssh_0.9.6) IP 33곳. 'SSH 키 심기' 34회
- 추정 33이 세 값에서 겹친다. 같은 도구가 '한 곳당 한 번 로그인 → 같은 열쇠 심기'를 돌린 것으로 보인다. 세 값의 33곳이 같은 곳인지는 확인할 수 없다
- 사실 02 검체 4종(46,525 · 153,208 · 239,388 · 334,816바이트, 합계 773,937바이트)이 각 3회씩 ATK-D71792 · ATK-EE2628 에서 왔다. 네 해시 모두 8/28(당시 ATK-F4738A)에 처음 기록, 8/30 에도 4종, 9/20 에 그중 하나. 37일 동안 파일은 그대로, 보낸 별칭만 바뀜
- 사실 VNC(5900) 접촉 32,043건. RFB 버전 003.008 30,099회 · 003.003 1,887회. 버전이 기록된 31,986건 중 003.008 이 94.1%. 10/1 에 처음 과반(63.2%)이 된 비중이 더 커졌다
사실 시각이 찍힌 다섯 접속 모두 이미 장부에 있던 모양입니다. 어제 처음 본 접속은 하나도 없었습니다. 가장 짧은 건 5초, 가장 긴 건 86초였습니다. 사람이 자물쇠 앞에서 고민하는 시간으로는 너무 짧습니다.
열리지 않는 사물함 앞에서는
사실 두 번째 사물함(센서 02)은 열리지 않습니다. 그래서 로그인 성공도, 명령도, 비밀번호도 없습니다. 누가 어느 창구에 몇 번 왔는지만 남습니다.
| 창구 | 무엇을 하는 문인가 | 포트 | 접촉 | 출발지 |
|---|---|---|---|---|
| VNC | 화면공유 | 5900 | 32,043건 | 82곳 |
| RDP | 윈도우 원격 데스크톱 | 3389 | 752건 | 114곳 |
| ADB | 안드로이드 기기 연결 통로 | 기록 없음 | 406건 | 기록 없음 |
| SMB | 윈도우 파일 공유 | 445 | 176건 | 36곳 |
| LDAP | 회사 계정 목록 조회 | 389 | 132건 | 11곳 |
| MSSQL | 마이크로소프트 데이터베이스 | 1433 | 64건 | 45곳 |
사실
VNC가 전체의 95.4%입니다. 하루 32,043건이면 약 2.7초에 한 번입니다. 한 곳이 평균 390.8번씩 왔습니다. 가장 많이 온 세 곳(ATK-F81B56 6,484 · ATK-943F0E 6,481 · ATK-A9F1B3 6,468)이 이 서버 전체 기록의 약 57.9%를 차지합니다. 세 곳의 숫자 차이가 20건도 안 됩니다.
사실 이 서버에도 파일 4종이 3번씩 남았습니다. 네 개를 합쳐 773,937바이트, 약 774킬로바이트입니다. 스마트폰 사진 한 장보다 작습니다. 네 파일 모두 8월 28일에 처음 기록된 것입니다. 37일 동안 한 바이트도 바뀌지 않았고, 보낸 별칭만 달라졌습니다.
추정
SMB 창구에 온 접속은 대부분 아주 오래된 세대(SMB1)의 방언 목록을 통째로 내밀었습니다. RDP 이름표에는 zgrab도 2번 있었습니다. zgrab은 인터넷 전체를 훑는 조사 도구의 이름입니다. 이런 모양은 특정 대상을 노린 공격보다 인터넷 전역을 훑는 스캐너에서 흔합니다.
어제 나온 값 — 받아 적을 것
방어에 쓰실 수 있게 해시를 그대로 옮깁니다. 해시는 파일 내용 전체로 계산한 고유 번호입니다. 한 글자만 달라도 전혀 다른 값이 나옵니다. 값을 누르면 복사됩니다. 어제는 주소(URL)가 남은 파일이 없습니다. 설명 칸의 날짜들을 보세요.
0c99433c7d433d65ab890dcee20b330f262379d532bc76f91e18f09ecfa5fb54URL 미기록 · 센서 01 · 202바이트 POSIX 셸 스크립트 · 1회 · 출처 ATK-F2B80A · 8/21 · 8/23 · 9/6 에 이어 네 번째01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546bURL 미기록 · 센서 01 · 1바이트, 매직 넘버 없는 빈 파일 · 22회 · 출처 ATK-F2B80A · ATK-2CB5A2 · 8/17 부터 반복a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2URL 미기록 · 센서 01 · 389바이트 OpenSSH RSA 공개키 · 출처 33곳 · 33회 · 8/16 부터 반복 · 표본 별칭 10곳(ATK-33A124 · B2F090 · 4324DF · 583E9B · 194BB8 · 1CCF8E · 9CC856 · 6EF67D · E2942E · 5B0125)a9b1c85a7bd78dd1112ecc75c9070ea8c53078831a17aa09ebeb287fe6e21b72URL 미기록 · 센서 01 · 9바이트 ASCII 텍스트 · 1회 · 출처 ATK-7FD4FE · 내용 미상1193dde1c831808bf6f2db6f5b850b846b8a7f870873ec3b8a347f21cc5d96e3URL 미기록 · 센서 01 · 9바이트 ASCII 텍스트 · 1회 · 출처 ATK-7FD4FE · 위 a9b1c85a… 와 짝0d3c687ffc30e185b836b99bd07fa2b0d460a090626f6bbbd40a95b98ea70257URL 필드 없음 · 센서 02 · 46,525바이트 · 3회 · 출처 ATK-D71792 · ATK-EE2628 · 8/28 · 8/30 · 9/20 에도 있었다d7188b8c575367e10ea8b36ec7cca067ef6ce6d26ffa8c74b3faa0b14ebb8ff0URL 필드 없음 · 센서 02 · 153,208바이트 · 3회 · 출처 ATK-D71792 · ATK-EE2628 · 8/28 · 8/30 에도 있었다76ae6d577ba96b1c3a1de8b21c32a9faf6040f7e78d98269e0469d896c29dc64URL 필드 없음 · 센서 02 · 239,388바이트 · 3회 · 출처 ATK-D71792 · ATK-EE2628 · 8/28 · 8/30 에도 있었다a1b6223a3ecb37b9f7e4a52909a08d9fd8f8f80aee46466127ea0f078c7f5437URL 필드 없음 · 센서 02 · 334,816바이트 · 3회 · 출처 ATK-D71792 · ATK-EE2628 · 8/28 · 8/30 에도 있었다사실 아홉 줄 모두 이미 장부에 있던 값입니다. 차단 목록을 꾸준히 관리했다면 어제 새로 추가할 줄은 없습니다. 그 자체가 어제의 결과입니다.
공격자가 쓴 수법을 국제 분류표에 대응시키면
MITRE ATT&CK은 공격 수법마다 번호를 붙여 둔 국제 목록입니다. 어제 본 행동을 그 번호에 맞추면 이렇습니다. ID를 누르면 원문 설명으로 갑니다.
- T1110.001Brute Force: Password Guessing — 로그인 시도 5,020회, 기본값 위주 조합추정
- T1078.001Valid Accounts: Default Accounts — 기본 계정류 조합으로 텔넷 로그인 성공 5건추정
- T1082System Information Discovery — '정찰 — 시스템' 3,250회추정
- T1105Ingress Tool Transfer — '파일 다운로드' 67회, '다운로드 후 실행' 49회추정
- T1222.002File and Directory Permissions Modification: Linux — '실행 권한 부여' 81회추정
- T1098.004Account Manipulation: SSH Authorized Keys — '지속성 — SSH 키 심기' 34회, 389바이트 공개키 33회추정
- T1070Indicator Removal — '흔적 삭제' 35회 (세부 기법은 명령 원문이 없어 특정 불가)추정
- T1046Network Service Discovery — 센서 02 의 VNC · RDP · SMB · LDAP · MSSQL 접촉 (침투가 아니라 탐색 단계)추정
사실
여덟 줄 모두 **[추정]**입니다. 우리 손에 있는 건 행동 분류 결과와 횟수까지입니다. 명령 원문은 없습니다. 그래서 번호를 붙이는 일은 늘 해석입니다. 특히 T1098.004가 앞에서 본 열쇠 명단 바꿔치기입니다.
전에 이런 모양이 있었다
사실 Mirai 봇넷 (2016). 텔넷 기본 계정을 대입해 IoT 장비를 감염시킨 사건입니다. IoT 장비는 공유기·CCTV처럼 인터넷에 연결된 작은 기기입니다. 어제 표에 있는
root/xc3511,root/juantech는 2016년 공개된 Mirai 소스코드의 기본 자격증명 목록에 들어 있는 조합입니다. (출처 유형: 정부 기관 경보 US-CERT TA16-288A, 2016 · 공개 소스코드)
추정 닮은 건 텔넷 기본 계정 대입이라는 수법까지입니다. 어제 관측이 Mirai 계열이라는 판정은 하지 않습니다. 검체 분류 태그가 어제 재료에 없습니다. 10년 전 복도에서 돌던 번호가 아직도 돌고 있다는 것까지만 말합니다.
그래서 뭘 해야 하나
사물함 이야기로 돌아가면 할 일은 단순합니다. 누구나 아는 번호를 쓰지 않을 것, 열쇠 명단을 들여다볼 것, 복도에 사물함을 내놓지 않을 것입니다.
사실
1. 기본 계정·쉬운 비밀번호를 그대로 쓰고 있다 · 가능성 높음
어제 눈여겨본 다섯 건은 모두 로그인에 성공했습니다. admin/admin은 12곳에서 102번, root/admin 93번, root/xc3511 87번, root/juantech 70번, root/(빈칸) 70번, support/support 54번 들어왔습니다.
추정 이 번호 중 하나를 쓰고 있었다면 별다른 기술 없이 열렸을 겁니다. 열고 나면 먼저 안을 둘러봅니다(정찰 3,250회). 그다음 바깥 파일을 받아 돌리고, 장비를 봇넷의 일원으로 쓸 수 있습니다. 다만 어제 실제로 남은 파일은 1바이트·9바이트·202바이트 스크립트·공개키뿐이었습니다. 실행 프로그램은 없었습니다.
사실 2. 비밀번호 로그인만 쓰고 열쇠 방식을 안 쓴다 · 가능성 높음 로그인 시도 5,020회, SSH 세션 3,559건이었습니다. 같은 공개키가 33곳에서 33번 심겼습니다.
추정
비밀번호 로그인이 꺼져 있었다면 5,020번의 다이얼 돌리기는 처음부터 의미가 없었습니다. 반대로 한 번 열린 뒤 열쇠가 명단에 올라가면, 다이얼 번호를 바꿔도 그 열쇠로 다시 열립니다. 열쇠 방식으로 바꾼 뒤에도 authorized_keys(허용된 열쇠 목록)를 열어 모르는 열쇠가 없는지 확인하세요.
사실 3. 관리 창구를 인터넷에 직접 열어 두고 있다 · 가능성 높음 하루에 SSH·텔넷 쪽 216곳, 윈도우 원격 관리 쪽 311곳이 문을 두드렸습니다. RDP 752건(114곳), VNC 32,043건(82곳)입니다.
추정 관리 창구가 VPN이나 접근 제어 뒤에 있었다면 이 접촉들은 자물쇠에 손도 못 댔을 겁니다. 사물함을 복도가 아니라 잠긴 교실 안에 두는 것과 같습니다.
추정
4. 반복 시도 차단(fail2ban 등)이 없다 · 가능성 중간
fail2ban은 “몇 번 틀리면 한동안 잠그는” 도구입니다. root/xc3511처럼 한 곳이 29번씩 돌리는 쪽은 이걸로 막힙니다. 하지만 345gs5662d34처럼 33곳이 한 번씩만 돌리면 걸리지 않습니다. 두 종류가 섞여 있어서 ’중간’입니다. 계정 단위 잠금과 비밀번호 로그인 차단을 함께 써야 하는 이유입니다.
추정 5. 밖으로 나가는 연결을 막지 않는다 · 가능성 중간 ‘파일 다운로드’ 67회, ‘다운로드 후 실행’ 49회, ‘실행 권한 부여’ 81회였습니다. 서버가 바깥으로 마음대로 나갈 수 있으면 “받고 → 권한 주고 → 실행”이 그대로 이어집니다. 다만 어제 첫 번째 서버에 실제로 남은 파일에는 실행 프로그램이 없었습니다. 그래서 ’높음’이 아니라 ’중간’입니다.
추정 6. 기록을 바깥에 모으지 않는다 · 가능성 중간 ’흔적 삭제’가 35회 있었습니다. 우리는 허니팟이라 다섯 건 모두 녹화가 남았습니다. 일반 서버가 기록을 자기 안에만 두면, 침입자가 그 기록을 지울 수 있습니다. 어제 42일 전과 똑같은 접속을 알아본 것도 42일 전 기록이 따로 남아 있어서였습니다.
사실
반복해서 나온 지표(압축을 풀어야 보이는 31[.]77[.]227[.]121/bins/ 경로 12건, 디스코드 웹훅 1건)는 C-TAS 신고 대상입니다. C-TAS는 한국인터넷진흥원(KISA)의 사이버 위협정보 공유 체계입니다. 확인된 건 전송 성공까지입니다. KISA 쪽에 실제로 올라갔는지는 따로 확인해야 합니다.
같은 날 42일 만의 재방문 이야기는 60초 영상으로도 만들었습니다. 영상은 0.1초 차이 하나에 집중했습니다. 이 글은 그 옆의 숫자들을 펼쳤습니다.
우리가 모르는 것
이 블로그가 다른 곳과 다른 지점입니다. 아는 것만큼 모르는 것도 적습니다.
똑같았던 접속들에 대해
- [확인 불가]
ATK-F2B80A가 8월 23일과 같은 명령 48개를 쳤는지는 모릅니다. 명령 원문이 없습니다. 개수·파일 해시·길이가 같다는 것까지만 말할 수 있습니다. - [확인 불가]
ATK-F2B80A와ATK-2CB5A2는 명령 48개·20개를 치고 파일 12건·11건을 남겼는데 행동 분류가 비어 있습니다. 8월 29일 브리프도 같은 공백을 지적했습니다. 어제 명령을 가장 많이 친 접속이 무엇을 했는지 모릅니다. - [확인 불가]
ATK-677233은 ‘파일 다운로드’·‘다운로드 후 실행’,ATK-50E6EA는 ’파일 다운로드’가 분류됐습니다. 그런데 둘 다 남은 파일이 0개입니다. 다운로드가 실패했는지, 저장이 안 됐는지, 분류만 된 건지 구분할 수 없습니다. - [확인 불가] 9바이트 글자 파일 두 개(
a9b1c85a…·1193dde1…)와 202바이트 셸 스크립트(0c99433c…)의 내용은 모릅니다. 그래서 용도를 판단하지 않았습니다. - [추정] 세션별 접속 포트는 데이터에 없습니다. 텔넷=2223, SSH=2222는 포트 수와 프로토콜 수가 정확히 같아서(1,768 · 3,559) 맞춘 것입니다.
게시판에 붙이지 않은 번호와 33곳에 대해
- [확인 불가] 적지 않은 조합이 3,026종으로 가장 많은 이유를 모릅니다. 공격 쪽 번호 목록이 바뀌었는지, 집계 방식이 바뀌었는지 데이터가 구분해 주지 않습니다.
- [확인 불가] 3,026종 중 실제로 새어 나간 계정이 얼마나 되는지 모릅니다. ’새어 나간 것일 수 있다’는 공개하지 않는 이유일 뿐, 유출을 확인한 것이 아닙니다.
- [확인 불가]
345gs5662d34조합(33곳), 공개키a8460f44…(33곳), 지문f555226d…(33곳)가 같은 33곳인지 모릅니다. 출발지별로 이어 주는 정보가 없습니다. 공개키를 보낸 곳도 33곳 중 10곳만 표본으로 실려 있습니다.
두 번째 사물함에 대해
- [추정] 02 검체 4종이 안드로이드 통로(ADB)로 들어왔다는 건 추정입니다. 이 서버에서 들어온 내용이 남는 통로가 ADB뿐이라는 정의에 기댄 판단입니다. 파일 종류와 ADB 출발지 수는 데이터에 없습니다.
- [확인 불가] 02 검체 4종은 8월 28일과 해시가 같은데 보낸 별칭이 다릅니다(8/28
ATK-F4738A→ 어제ATK-D71792·ATK-EE2628). 같은 도구가 다른 곳에서 돌았는지, 이 파일이 널리 퍼져 있는지 구분할 수 없습니다. - [확인 불가] VNC 버전
003.008의 비중이 10월 1일 63.2%에서 어제 94.1%로 커진 원인을 모릅니다. 상대 도구가 바뀌었는지, 우리 허니팟 설정이 바뀌었는지 구분이 안 됩니다. 어느 출발지가 만든 건지도 모릅니다. - [확인 불가] 많이 온 곳 목록에 가림 처리된 앞자리가 같은 별칭 쌍이 있습니다(
201.79.x.x의ATK-F81B56·ATK-08F736,168.144.x.x의ATK-48B384·ATK-2A62E4). 별칭이 다르니 서로 다른 출발지입니다. 같은 대역인지 따지려면 가림을 풀어야 하므로 따지지 않습니다.
일부러 빼거나 연결하지 않은 것
- [제외] 디스코드 웹훅 주소 1건은 어느 센서의 어느 접속에서 나왔는지 데이터에 없습니다. 9월 15일 브리프에도 반복 지표로 적혔습니다. 주소 안에 토큰이 들어 있어 값을 싣지 않았습니다.
- [확인 불가] C-TAS 신고는 전송 성공만 확인됐습니다. KISA 적재 여부는 따로 확인해야 합니다.
- [제외] 배경 통계(KISA 공지 CVE 7,662건 중 CISA KEV 412건, 랜섬웨어 확인 101건)는 어제 허니팟 공격과 직접 이어지지 않습니다. 이어진 것처럼 쓰지 않았습니다.
아예 판단하지 않는 것
- 통신사·조직(ASN·ISP) — 관련 데이터베이스가 없습니다. 추정하지 않습니다.
- 지리 위치 — 같은 이유로 모릅니다. IP 지리정보는 애초에 누가 했는지 가리는 근거가 되지 못합니다. 이 글은 어떤 국가·기업·개인도 공격자로 지목하지 않습니다.
- VPN·Tor·클라우드 여부 — 판별할 수단이 없습니다.
- VirusTotal — 연동돼 있지 않습니다. 검체 분류는 MalwareBazaar 태그를 쓰는데, 어제 재료에는 태그가 없습니다.
- 접속 프로그램 문자열(User-Agent) — 두 서버 모두 웹(HTTP)이 아닙니다. 첫 번째는 SSH·텔넷, 두 번째는 SMB·RDP·VNC·MSSQL·LDAP·ADB입니다. 웹 공격은 별도 소스에서 다룹니다.
- 취약점 번호(CVE) 연결 — SSH·텔넷 공격은 대부분 특정 취약점을 참조하지 않습니다. 두 번째 서버도 접속 규칙을 맞추는 단계라 마찬가지입니다.
어제 복도는 늘 그렇듯 붐볐습니다. 17초에 한 번꼴로 누군가 다이얼을 돌렸습니다. 다섯 번 열렸고, 다섯 번 모두 전에 본 손놀림이었습니다. 42일 전 녹화와 겹쳐 보이는 영상도 있었습니다. 사물함 안에 남은 물건 아홉 종도 전부 본 적 있는 것이었습니다.
새로웠던 건 게시판에 붙이지 않은 번호의 개수였습니다. 3,026개입니다. 그 번호들이 무엇인지는 이 글에 없습니다. 앞으로도 없을 겁니다. 다만 하나는 분명합니다. 게시판에 붙은 20개 중에 내 번호가 있다면, 오늘 바꿀 차례입니다.
관측일은 2026년 10월 4일(UTC 기준 하루)이고, 이 글은 다음 날 정리했습니다. 출발지 IP는 브리프에 가림 처리된 형태(121.161.x.x, 58.72.x.x, 112.46.x.x, 45.238.x.x, 117.216.x.x, 201.79.x.x, 168.144.x.x) 그대로 옮겼고 복원하지 않았습니다. 주소는 실수로 접속되지 않도록 디팽([.]) 상태를 유지했고, 토큰이 든 웹훅 주소는 싣지 않았습니다. 자격증명은 서로 다른 IP 3곳 이상에서 반복 관측된 조합 20개만 원문 인용했고, 나머지 3,026종은 개수만 밝히고 값은 적지 않았습니다. 통신사·국적·VPN 여부처럼 우리에게 계측 수단이 없는 항목은 추정하지 않고 “모른다”로 남겨 뒀습니다.
