크기는 1,196바이트 그대로, 얼굴만 바꿔 왔다 — 사흘 만에 낡은 사진 명단
10월 13일부터 출발지를 바꿔 가며 되풀이된 '명령 559개' 침입이 10월 18일 밤 또 들어왔습니다. 1시간 8분 사이에 네 곳이 같은 파일 두 개를 받아 갔습니다. 설치 스크립트는 처음 보는 주소에서 왔습니다. 장비용 실행파일은 크기가 지난번과 같았지만 해시는 처음 보는 값이었습니다.

아파트 경비실 벽에는 가끔 사진이 붙어 있습니다. “이 사람을 들이지 마세요.” 전단지를 몰래 돌리던 사람일 수도 있고, 남의 택배를 들고 가던 사람일 수도 있습니다. 경비 아저씨는 들어오는 사람 얼굴을 그 사진과 맞춰 봅니다.
이 방법은 잘 통합니다. 단, 조건이 하나 있습니다. 그 사람이 같은 얼굴로 다시 와야 합니다.
키도 같고, 들어와서 하는 행동도 똑같은 사람이 있다고 해 봅시다. 그런데 올 때마다 얼굴만 다르다면 어떨까요? 벽에 붙은 사진은 그 사람을 한 번도 알아보지 못합니다.
어제 우리 서버에서 그런 일이 있었습니다.
먼저, 우리 서버 이야기
사실 우리는 허니팟을 운영합니다. 허니팟은 일부러 허술하게 열어 둔 미끼 서버입니다. 누가 와서 무엇을 하는지 지켜보려고 둡니다. 아래 이야기는 실제 피해가 아닙니다. 관찰 기록입니다.
사실 미끼 서버는 두 대입니다. 센서 01은 비밀번호만 맞으면 실제로 들어올 수 있습니다. 들어와서 친 명령과 받아 간 파일이 기록됩니다. 센서 02는 문이 열리지 않습니다. 누가 어느 문을 몇 번 두드렸는지만 적습니다. 오늘 이야기는 대부분 센서 01에서 나왔습니다.
사실
ATK-로 시작하는 이름은 우리가 출발지마다 붙이는 별칭입니다. 출발지 IP는 뒷자리를 가려서 적습니다. 파일을 내려준 주소는 185[.]228[.]72[.]128처럼 점을 괄호로 감쌉니다. 실수로 눌러도 접속되지 않게 일부러 망가뜨린 표기입니다. 이걸 디팽(defang) 이라고 부릅니다.
오늘 쓸 말 하나: 해시
사실 해시는 파일 내용으로 계산한 고유 번호입니다. 글자 하나만 바뀌어도 완전히 다른 번호가 나옵니다. 그래서 보안 쪽에서는 해시로 파일을 알아봅니다. 나쁜 파일의 해시를 모아 둔 목록을 해시 차단 목록이라고 합니다.
경비실 비유로 옮기면 이렇습니다. 해시는 얼굴 사진이고, 해시 차단 목록은 벽에 붙은 사진 명단입니다. 파일 크기는 키쯤 됩니다.
같은 사람이 또 왔다
사실
10월 18일 밤 9시 57분(한국 시각)이었습니다. ATK-1B78D6(177.46.x.x)가 텔넷으로 들어와 로그인에 성공했습니다. 텔넷은 멀리 있는 기계에 접속해 명령을 치는 오래된 통로입니다. 오가는 내용이 암호로 감싸지지 않습니다.
사실 이 손님은 75.34초 동안 머물렀습니다. 그동안 명령을 559개 쳤습니다. 1초에 7개 넘게 친 셈입니다. 사람 손으로는 나올 수 없는 속도입니다. 파일도 22건 받았습니다.
사실 559개라는 숫자는 처음이 아닙니다. 10월 13일에 다섯 번, 10월 15일에 두 번 봤습니다. 매번 출발지가 달랐습니다. 그런데 명령 수는 559개로 똑같았습니다.
사실
56분 뒤 ATK-AB8FF6(185.40.x.x)가 들어왔습니다. 82.15초 동안 명령 559개, 파일 22건이었습니다. 앞 손님과 같습니다.
사실
이어서 두 곳이 더 왔습니다. ATK-B91DF4(42.100.x.x)는 명령 531개, ATK-8BA6EA(113.221.x.x)는 532개였습니다. 559개보다 27~28개 적습니다. 받은 파일도 21건으로 한 건 적습니다.
사실 네 번의 침입은 1시간 8분 32.69초 사이에 모두 시작됐습니다. 약 17분에 한 번꼴입니다. 네 곳 모두 무엇을 하려 했는지(의도 분류)가 똑같았습니다. 파일 다운로드, 실행 권한 부여, 다운로드 후 실행, 흔적 삭제. 이렇게 네 가지입니다.
’실행 권한 부여’는 받은 파일에 “실행해도 된다”는 표시를 붙이는 일입니다. 리눅스에서는 이 표시가 없으면 파일을 켤 수 없습니다. ’흔적 삭제’는 들어왔다 간 기록을 지우는 일입니다.
추정 출발지 네 곳은 IP 앞자리부터 서로 다릅니다. 그런데 하는 일은 똑같습니다. 사람이 직접 쳤다기보다는, 같은 자동화 프로그램이 이미 감염된 여러 장비에서 돌고 있는 모양에 가깝습니다. 경비실 비유로 치면, 키도 같고 걸음걸이도 같은 사람이 매번 다른 옷을 입고 온 겁니다.
이번엔 얼굴이 달랐다
여기까지는 지난주에도 본 장면입니다. 다른 점은 이 네 손님이 받아 간 파일에 있었습니다.
사실 네 곳 모두 같은 파일 두 개를 받았습니다.
| 파일 | 크기 | 10월 13·15일 | 10월 18일 |
|---|---|---|---|
설치 스크립트 wget.sh |
1,498바이트 | 1,487바이트, 176[.]65[.]139[.]40에서 |
185[.]228[.]72[.]128에서 |
| Renesas SH 칩용 실행파일 | 1,196바이트 | 1,196바이트, 해시 7c34c76b… |
해시 453505bf… |
두 번째 줄을 보세요. 크기는 1바이트도 다르지 않습니다. 그런데 해시가 다릅니다. 키는 똑같은데 얼굴만 바뀐 겁니다.
사실
wget.sh는 이름 그대로 인터넷에서 파일을 받아 오는 명령(wget)을 적어 둔 메모입니다. .sh는 명령을 순서대로 적어 둔 파일(셸 스크립트)이라는 뜻입니다. 이번 것은 지난번보다 11바이트 큽니다. 영문으로 11자, 단어 두세 개 차이입니다.
사실
이 파일을 내려준 주소 185[.]228[.]72[.]128은 지난 일지 38개 어디에도 없던 주소입니다. 두 파일의 해시도 마찬가지입니다. 네 손님의 별칭도 전부 처음 보는 것이었습니다.
사실 1,196바이트는 영문 1,196자 분량입니다. 원고지로 치면 여섯 장쯤입니다. 공부 노트 한 쪽에 다 들어가는 크기입니다. Renesas SH는 칩 이름입니다. 칩은 기계의 두뇌이고, 종류마다 알아듣는 말이 다릅니다. 그래서 실행파일은 칩 종류별로 따로 만듭니다.
추정 명령 559개는 그대로입니다. 바뀐 것은 파일을 내려주는 주소와 파일의 해시뿐입니다. 사흘 전 해시로 차단 목록을 만들었다면 어제 이 파일은 그 목록에 걸리지 않았습니다. 벽에 붙인 사진이 사흘 만에 낡은 겁니다.
559개와 531개, 무엇이 다를까
사실
202바이트짜리 셸 스크립트(0c99433c…)가 하나 더 있습니다. 8월 21일부터 일곱 개 일지에 나온, 이미 아는 얼굴입니다. 어제 이 파일은 559개짜리 두 곳만 받았습니다. 531·532개짜리 두 곳은 받지 않았습니다.
추정 531·532개 쪽은 명령이 27~28개 적고, 받은 파일이 한 건 적습니다. 그 차이가 202바이트 파일 하나를 받고 다루는 단계일 수 있습니다. 하지만 명령 원문이 없어 확인하지 못했습니다.
가장 빨랐다
사실
559개짜리가 머문 시간은 10월 13일에 79.27104.73초, 10월 15일에 104.25107.69초였습니다. 어제 첫 손님은 75.34초였습니다. 지금까지 본 559개짜리 가운데 가장 짧습니다. 이전 최단 기록보다 3.93초 빠릅니다.
시간 순서로 보면
어제 하루를 시간 순서로 늘어놓으면 이렇게 됩니다. 두 번째 줄부터 다섯 번째 줄까지, 손님 사이 간격이 56분 → 7분 → 2분으로 줄어드는 것을 눈여겨보세요.
- 사실 ATK-D385E9(185.41.x.x)가 텔넷 로그인에 성공했다. 76.47초 동안 명령 33개, 다운로드 19건. intents 는 흔적 삭제 1종, completeness 66, TTY 기록 있음. 1바이트 빈 파일(01ba4719…)은 받았지만 wget.sh·Renesas SH 는 받지 않았다
- 사실 ATK-1B78D6(177.46.x.x)가 텔넷 로그인에 성공했다. 75.34초 동안 명령 559개, 다운로드 22건. intents 4종, completeness 81
- 사실 앞 세션 시작 56분 33.35초 뒤 ATK-AB8FF6(185.40.x.x)가 들어왔다. 82.15초 동안 명령 559개, 다운로드 22건, intents 4종, completeness 81. 앞 세션과 같다
- 사실 앞 세션이 끝나고 7분 03.94초 뒤 ATK-B91DF4(42.100.x.x)가 들어왔다. 91.84초 동안 명령 531개, 다운로드 21건, intents 4종, completeness 78
- 사실 앞 세션이 끝나고 2분 01.42초 뒤 ATK-8BA6EA(113.221.x.x)가 들어왔다. 91.71초 동안 명령 532개, 다운로드 21건, intents 4종, completeness 78. 첫 세션부터 여기까지 1시간 08분 32.69초 사이에 같은 형태의 침입이 네 번
- 사실 네 세션 모두 wget.sh(e06be431…, 1,498바이트, hxxp://185[.]228[.]72[.]128/wget.sh)와 Renesas SH 실행파일(453505bf…, 1,196바이트)을 받았다. 두 파일 모두 4회, 받아 간 곳 4곳
- 사실 202바이트 셸 스크립트(0c99433c…)는 559개짜리 두 세션(ATK-1B78D6·ATK-AB8FF6)만 받았다. 531·532개짜리 두 세션은 받지 않았다
- 추정 531·532개 판은 559개 판보다 명령이 27~28개, 다운로드가 1건 적다. 그 차이가 202바이트 스크립트 하나를 받고 다루는 단계일 수 있다. 명령 원문이 없어 확인하지 못했다
- 사실 559개 판의 소요 시간은 10/13 79.27~104.73초, 10/15 104.25~107.69초였다. 오늘 75.34초는 그 범위의 최소값보다 3.93초 짧다
- 추정 출발지 앞 두 옥텟이 서로 다른 네 곳이 같은 명령 묶음을 실행했다. 사람이 직접 친 것보다는 같은 자동화 도구가 서로 다른 감염 장비에서 도는 모양에 가깝다. 텔넷이라 SSH 지문은 비어 있어 지문으로는 확인할 수 없다
- 사실 ATK-9A068C 가 143[.]20[.]154[.]42 에서 bot.arc(18회)·bot.arm4(18회)·bot.arm5(16회)를 받아 갔다. 해시 세 개는 10/15 일지와 같고, 별칭은 아카이브에 없다
손님이 올수록 다음 손님이 빨리 왔습니다. 마지막 두 곳은 앞사람이 나가고 2분 만에 들어왔습니다. 그리고 맨 아래 줄을 보세요. 10월 15일에 본 bot.* 파일 세 개는 해시가 그대로였습니다. 이번엔 출발지 별칭이 새것이었습니다. 어떤 파일은 얼굴을 바꾸고, 어떤 파일은 사람만 바꿔 다시 왔습니다.
사진 대신 무엇을 볼까
벽에 붙은 사진이 안 통한다면, 경비원은 다른 것을 봐야 합니다. 행동입니다. 어제 네 손님은 얼굴이 달랐지만 행동은 같았습니다. 그리고 그 행동에는 빠질 수 없는 단계가 하나 있었습니다.
사실 네 손님 모두 로그인 뒤에 바깥 주소에서 파일을 받아 왔습니다. 하루 전체로 봐도 ’파일 다운로드’로 분류된 명령이 394개, ’다운로드 후 실행’이 340개였습니다.
추정 공격자가 해시를 아무리 바꿔도, 파일을 밖에서 가지고 들어와야 한다는 순서는 바꿀 수 없습니다. 경비실로 치면 수상한 사람 얼굴을 외우는 대신 “이 건물 사람은 아무 바깥 창고에나 드나들지 않는다” 는 규칙을 세우는 쪽입니다. 사진은 사흘 만에 낡았지만, 이 규칙은 얼굴이 바뀌어도 그대로 통합니다.
압축을 풀어야 보이는 주소
사실
겉으로 보이는 주소 말고 숨은 주소도 있었습니다. UPX는 실행파일을 압축해 크기를 줄이는 도구입니다. 압축된 파일은 겉에서 안쪽 글자가 보이지 않습니다. 이 압축을 풀어야만 나오는 주소가 12개 있었습니다. 전부 31[.]77[.]227[.]121/bins/ 아래, 칩 종류별 경로였습니다. 이 주소는 8월 19일부터 우리 기록에 있습니다.
사실 겉면만 보고 만든 차단 목록에는 이 12개가 들어가지 않습니다. 사진을 찍을 때 모자를 벗기지 않으면 얼굴이 안 보이는 것과 같습니다.
받아 적을 값
방어하는 쪽이 목록에 넣을 값입니다. 값을 누르면 복사됩니다. 주소는 디팽 상태 그대로 두었습니다.
hxxp://185[.]228[.]72[.]128/wget.sh설치 스크립트 유포지 · 아카이브 38개 일지에 없던 주소 · 4회e06be431a8d427579fec15f84bb152326953a7be7a4d20060c6317614ca27843위 wget.sh · POSIX 셸 스크립트 · 1,498바이트 · ATK-1B78D6·ATK-AB8FF6·ATK-B91DF4·ATK-8BA6EA453505bf331a5646152b88692dd2e3d9e40f61b2ac97945f78c76f05ad5a57a0ELF 32비트 Renesas SH · 정적 링크 · stripped · 1,196바이트 · 4회 · 10/13·10/15 의 7c34c76b… 와 크기 같고 해시 다름0c99433c7d433d65ab890dcee20b330f262379d532bc76f91e18f09ecfa5fb54POSIX 셸 스크립트 · 202바이트 · 2회(ATK-1B78D6·ATK-AB8FF6) · 8/21 부터 반복01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1바이트 빈 파일 · 133회 · 7개 별칭위 세 줄이 오늘 새로 붙일 사진입니다. 아래 두 줄은 이미 명단에 있어야 할 얼굴입니다. 1바이트 파일은 글자 딱 한 개 크기인데, 하루에 133번 내려왔습니다. 그리고 다시 말하지만, 위 세 줄도 다음 주면 낡을 수 있습니다.
어제 하루 전체
사실 센서 01의 하루 숫자입니다.
| 항목 | 값 | 견줘 보면 |
|---|---|---|
| 세션 | 3,846건 | 약 22초에 한 번꼴로 누가 들어왔다 나갔습니다 |
| 출발지 | 221곳 | 한 곳당 평균 17번쯤 왔습니다 |
| SSH(2222번 문) | 2,467건 | 열 번 중 여섯 번 남짓입니다 |
| 텔넷(2223번 문) | 1,366건 | 나머지 네 번 가까이입니다 |
| 로그인 시도 | 3,234회 | 약 27초에 한 번꼴로 문고리를 돌렸습니다 |
| 명령 | 10,468개 | 오늘 주인공 네 곳이 친 2,181개가 그중 약 5분의 1입니다 |
사실
명령을 ’무엇을 하려는 것인지’로 나눈 합계도 있습니다. 시스템 정찰 2,296, 실행 권한 부여 1,414, 파일 다운로드 394, 다운로드 후 실행 340, cron 등록 103, 흔적 삭제 80, 채굴 55, SSH 열쇠 심기 19입니다. cron은 정해진 시각마다 명령을 자동으로 다시 돌려 주는 예약 기능입니다. SSH 열쇠 심기는 비밀번호 없이 들어올 수 있는 열쇠를 서버의 authorized_keys(허용된 열쇠 목록)에 적어 두는 일입니다.
사실 오늘의 네 손님에게는 cron도, 열쇠 심기도 없었습니다. 받아서 실행하고 지우고 나갔습니다. 자리를 잡고 눌러앉는 단계까지는 기록에 없습니다.
사실 화면 기록(TTY)은 3,036건 남았습니다. 세션 수 3,846건과 로그인 시도 3,234회는 각각 따로 센 숫자입니다. 세션 수가 문 번호별 합계(3,833건)보다 13건 많은 이유는 아래 ’우리가 모르는 것’에 적었습니다.
문이 안 열리는 서버: 센서 02
사실 센서 02에서는 화면공유 통로인 VNC가 6만 3,607번 두드려졌습니다. 하루가 8만 6,400초이니, 대략 1.4초에 한 번입니다. 그래도 10월 15일(8만 4,222번, 지금까지 최대)보다는 적습니다. 출발지 344곳도 10월 13일(438곳, 최대)보다 적습니다. 어제 센서 02에서 기록을 깬 값은 없었습니다.
| 문 | 번호 | 접촉 | 출발지 |
|---|---|---|---|
| VNC (화면공유) | 5900 | 63,607 | 344 |
| RDP (원격 데스크톱) | 3389 | 1,798 | 121 |
| SMB (파일 공유) | 445 | 223 | 59 |
| LDAP (사용자 목록 조회) | 389 | 105 | 11 |
| MSSQL (데이터베이스) | 1433 | 73 | 54 |
| ADB (안드로이드 기기 디버깅) | — | 415 | 기록 없음 |
사실
VNC 접속 때 서로 맞추는 버전 번호는 003.008이 4만 2,741번, 003.003이 2만 703번이었습니다. 003.008이 67.4%입니다. RDP 접속 첫 요청의 이름표 칸(쿠키)에는 hello가 1,274번, <ip>가 477번 적혀 왔습니다.
추정
SMB 쪽에서는 상대가 1990년대 규격 이름까지 한꺼번에 내밀었습니다(NT LM 0.12 41번, LANMAN1.0 35번 등). 어느 버전이든 맞는 걸 찾으려는 훑어보기 프로그램의 방식으로 읽힙니다.
사실
센서 02에도 파일이 두 개 남았습니다. 333a9ccd…(152회)와 0c3ad275…(60회)입니다. 둘 다 206,176바이트이고, 둘 다 ATK-412FD8에서 왔습니다. 해시와 별칭 모두 지난 기록에 없습니다.
이 비밀번호, 쓰고 계신가요
사실 어제 센서 01에 들어온 아이디·비밀번호 조합 가운데, 서로 다른 출발지 여러 곳에서 나와 인용해도 되는 것만 옮깁니다.
| 아이디 | 비밀번호 | 시도한 출발지 |
|---|---|---|
| admin | admin | 41곳 |
| 345gs5662d34 | 345gs5662d34 | 11곳 |
| root | root | 7곳 |
| root | (빈 비밀번호) | 6곳 |
| root | 123456 | 5곳 |
| admin | password | 5곳 |
| root | 1234 | 5곳 |
| root | xc3511 | 4곳 |
| root | xmhdipc | 4곳 |
| root | vizxv | 3곳 |
| root | juantech | 3곳 |
사실
admin / admin은 41곳에서 192번 나왔습니다. 한 곳당 평균 4.7번입니다. 한 곳이 다섯 번도 안 두드리고 다음 곳으로 넘긴 셈입니다.
사실 출발지 3곳 미만에서만 나온 조합은 2,339종입니다. 실제로 유출된 계정일 수 있어서 값은 싣지 않고 개수만 셉니다. 지난 일지 38개 중 다섯 번째로 많습니다. 더 많았던 날은 10월 8일(3,212), 10월 4일(3,026), 10월 13일(2,633), 9월 7일(2,527)입니다.
수법을 국제 분류표에 대응시키면
공격자가 쓴 방법을 MITRE ATT&CK라는 국제 분류표의 번호에 맞춰 보면 이렇습니다. ID를 누르면 원문 설명을 볼 수 있습니다.
- T1078.001Valid Accounts: Default Accounts추정
- T1110.001Brute Force: Password Guessing추정
- T1059.004Command and Scripting Interpreter: Unix Shell추정
- T1105Ingress Tool Transfer추정
- T1222.002File and Directory Permissions Modification: Linux and Mac추정
- T1070Indicator Removal추정
여섯 줄이 그대로 네 손님의 동선입니다. 공장 기본 계정으로 들어오고(T1078.001), 비밀번호를 맞혀 보고(T1110.001), 명령창을 쓰고(T1059.004), 바깥에서 파일을 들여오고(T1105), 실행 표시를 붙이고(T1222.002), 흔적을 지웁니다(T1070). 얼굴은 바뀌어도 이 표는 지난주와 같습니다. 전부 ’추정’인 이유는 명령을 분류한 결과를 우리가 이 표에 이어 붙였기 때문입니다.
전에 이런 모양이 있었다
사실
위 비밀번호 표의 root / xc3511, root / vizxv, root / juantech, root / xmhdipc는 2016년 공개된 Mirai 소스코드의 기본 비밀번호 목록에 있는 값입니다. Mirai는 공유기·카메라 같은 작은 기기를 감염시켜 한꺼번에 부린 봇넷입니다. 봇넷은 감염된 기기 여러 대를 한 사람이 묶어서 조종하는 무리를 말합니다.
추정 텔넷으로 들어오는 경로도 비슷합니다. 공유기·임베디드 장비용 칩(ARC·ARM·Renesas SH) 실행파일을 들여오는 점도 같은 계열의 수법과 겹칩니다. 다만 어제 파일이 Mirai에서 갈라져 나온 것인지는 확인하지 않았습니다. 파일 분류 결과가 기록에 없습니다. (참고: 미국 CISA 경보 TA16-288A)
그래서 뭘 해야 하나
사진 명단은 계속 고쳐 붙여야 합니다. 그것보다 오래 가는 규칙이 아래에 있습니다. 침해 가능성은 브리프의 판단을 그대로 옮겼습니다.
1. 공장 출하 계정·쉬운 비밀번호를 그대로 쓴다 · 침해 가능성 높음
추정
admin / admin이 41곳에서 192번 나왔습니다. 어제 주요 세션 다섯 건은 전부 로그인에 성공했습니다. 공장 비밀번호가 그대로인 장비라면, 같은 목록을 돌리는 프로그램에 그대로 열립니다. 그다음은 어제 본 순서 그대로입니다. 파일이 들어오고, 실행 표시가 붙고, 장비가 남의 명령을 받아 돕니다.
2. 비밀번호 로그인만 쓰고 열쇠 방식을 안 쓴다 · 침해 가능성 높음 추정 텔넷은 열쇠 방식이 없습니다. 비밀번호 하나만 맞으면 문이 열립니다. 어제 성공한 침입 다섯 건이 모두 이 길로 왔습니다. 게다가 비밀번호가 암호로 감싸지지 않은 채 오가서, 중간에서 엿듣기도 쉽습니다.
3. 관리용 문을 인터넷에 직접 열어 뒀다 · 침해 가능성 높음 추정 하루에 221곳이 센서 01의 문을 두드렸습니다. 밖에 열린 관리용 문은 하루 안에 발견된다고 봐야 합니다. 위 두 가지가 허술하면 같은 날 뚫립니다.
4. 재접속 제한(fail2ban·rate limit)이 없다 · 침해 가능성 중간
추정
fail2ban은 비밀번호를 여러 번 틀린 출발지를 잠시 막아 두는 프로그램입니다. 어제 로그인 시도는 출발지 한 곳당 평균 14.6회였습니다. admin / admin만 보면 한 곳당 4.7회입니다. 흔한 차단 기준(예: 5회) 안팎이라, 여러 곳에 나눠 두드리면 일부는 빠져나갑니다. 그래서 ’중간’입니다.
5. 장비가 밖으로 나가는 연결을 막지 않는다 · 침해 가능성 높음 추정 오늘 글의 결론이 여기 있습니다. 로그인 다음 단계는 전부 장비가 바깥 주소로 파일을 받으러 나가는 동작이었습니다. 장비가 아무 바깥 주소로나 나가지 못했다면 어제 본 반입은 실패했습니다. 해시가 바뀌든, 주소가 바뀌든 상관없이요. 사진 대신 동선을 막는 방법입니다.
6. 기록을 바깥에 모으지 않는다(로그 수집·EDR 없음) · 침해 가능성 높음
추정
흔적 삭제 명령이 하루 80번 나왔습니다. 주요 세션 다섯 건 모두에 들어 있었습니다. ATK-D385E9는 아예 흔적 삭제 하나만 했습니다. 기록이 장비 안에만 있으면 지우는 순간 사라집니다. 어제처럼 75~92초 만에 끝나는 침입은 사람이 화면을 보고 있다가 잡을 수 있는 길이가 아닙니다. EDR은 기기 안의 수상한 움직임을 감시해 바깥으로 보고하는 보안 프로그램입니다.
우리가 모르는 것
이 섹션은 이 일지에서 가장 중요한 부분입니다. 위에서 한 이야기가 어디까지 맞는지 선을 긋는 곳이기 때문입니다.
바뀐 얼굴에 대해
- [확인 불가]
185[.]228[.]72[.]128과 10월 13·15일의176[.]65[.]139[.]40이 같은 운영자인지 판단할 근거가 없습니다. 명령 묶음이 같다는 것만 확인됩니다. - [확인 불가]
wget.sh(e06be431…)가 Renesas SH 실행파일이나 다른 칩용 파일을 불러오는 스크립트인지 모릅니다. 스크립트 내용이 브리프에 없습니다. 다운로드 22건 가운데 저장된 해시로 확인되는 것은 일부뿐입니다. - [확인 불가] Renesas SH 실행파일
453505bf…는 1,196바이트로 작습니다. 다른 파일을 받아 오는 작은 첫 단계처럼 보이지만 추정일 뿐입니다. 파일 분류 결과(MalwareBazaar 태그)가 기록에 없습니다.
같은 행동에 대해
- [확인 불가] 531·532개짜리와 559개짜리의 차이가 202바이트 스크립트 단계라는 해석은 ‘누가 어떤 파일을 받았나’ 기록의 차이에서 나온 추정입니다. 명령 원문이 없어 검증하지 않았습니다.
- [확인 불가] 네 출발지가 같은 프로그램을 쓴다는 해석은 명령 수·의도 분류·받은 파일이 같다는 데 기댄 것입니다. 텔넷이라 접속 프로그램 지문(hassh)으로는 확인할 수 없습니다. 어느 경우든 ’같은 도구’까지만 말할 수 있습니다. ’같은 조직’이라고 할 근거는 없습니다.
숫자와 신고에 대해
- [확인 불가] 센서 01의 세션 수 3,846건은 문 번호별 합계 3,833건보다 13건 많습니다. 문 번호나 통로가 기록되지 않은 세션이 있는지 원재료로는 알 수 없습니다.
- [확인 불가] 텔넷 문을 2223번으로 적은 것은 텔넷 세션 수(1,366)와 2223번 문 세션 수(1,366)가 같아서입니다. 주요 세션 기록 자체에는 문 번호 칸이 없습니다.
- [확인 불가] 두 센서를 합친 출발지 842곳은 최대치입니다. 양쪽에 모두 온 출발지가 몇 곳인지 몰라서, 실제로는 더 적을 수 있습니다.
- [확인 불가] 센서 02의 ADB는 접촉 수 415건만 있고 상세 기록이 없습니다. ADB로 무엇이 들어왔는지, 206,176바이트 파일 두 개가 ADB로 들어왔는지 확인할 수 없습니다.
- [확인 불가] 센서 02에서 한 출발지가 여러 문을 돌아다녔는지는 출발지별 기록이 없어 세지 못했습니다.
- [확인 불가] 새 유포지
185[.]228[.]72[.]128은 C-TAS(한국인터넷진흥원 위협 정보 공유 시스템) 신고 대상입니다. 다만 전송 성공까지만 확인됐습니다. KISA에 실제로 등록됐는지는 따로 확인해야 합니다. - [확인 불가] 기록 속 주소 목록에 디스코드 웹훅 주소가 있습니다. 웹훅은 메신저 방에 자동으로 메시지를 보내는 주소입니다. 어느 세션·파일과 이어지는지 브리프에 없습니다. 주소 안에 비밀 토큰이 들어 있어 원문은 싣지 않습니다.
아예 판단하지 않는 것
- 통신사·조직(ASN·ISP): 관련 데이터베이스가 없습니다. 추정하지 않습니다.
- 지리 위치: 같은 이유로 모릅니다. IP의 지리 정보는 애초에 누가 했는지 가리는 근거도 되지 못합니다. 이 글은 어떤 국가·기업·개인도 공격자로 지목하지 않습니다.
- VPN·Tor·클라우드 여부: 판별할 수단이 없습니다.
- VirusTotal: 연동돼 있지 않습니다. 파일 분류는 MalwareBazaar 태그를 씁니다.
- 접속 프로그램 문자열(User-Agent): 두 센서 모두 웹(HTTP) 서버가 아닙니다. 센서 01은 SSH·텔넷, 센서 02는 SMB·RDP·VNC·MSSQL·LDAP·ADB입니다.
- 취약점 번호(CVE) 연결: SSH·텔넷 공격은 대부분 특정 취약점을 참조하지 않습니다. 센서 02도 접속 규칙을 맞추는 단계라 마찬가지입니다.
경비실 벽의 사진은 쓸모가 있습니다. 같은 얼굴로 다시 오는 사람은 막아 줍니다. 어제도 10월 15일의 bot.* 파일 세 개는 같은 얼굴로 돌아왔습니다.
하지만 명령 559개짜리 손님은 달랐습니다. 키는 1,196바이트 그대로였습니다. 행동은 559개 명령 그대로였습니다. 얼굴만 바꿔서 사흘 만에 다시 왔습니다. 사진 명단만 믿었다면 네 번 모두 처음 보는 손님이었을 겁니다.
얼굴은 언제든 바뀝니다. 바뀌지 않는 것은 밖에서 무언가를 가지고 들어와야 한다는 동선입니다. 그래서 할 일은 두 가지입니다. 공유기 관리자 비밀번호를 오늘 바꾸기. 그리고 장비가 모르는 바깥 주소로 나가지 못하게 막기.
관측일은 2026년 10월 18일(UTC 기준 하루)이고, 이 글은 다음 날 정리했습니다. 비교 대상은 10월 13일·10월 15일 일지와 8월 16일~10월 15일의 일지 38개입니다. 출발지 IP는 브리프에 가림 처리된 형태(177.46.x.x, 185.40.x.x, 42.100.x.x, 113.221.x.x, 185.41.x.x) 그대로 옮겼고 복원하지 않았습니다. 주소는 실수로 접속되지 않도록 디팽(hxxp://, [.]) 상태를 유지했습니다. 자격증명은 서로 다른 IP 여러 곳에서 관측돼 인용이 허용된 조합 11개만 원문으로 옮겼습니다. 3곳 미만에서만 나온 2,339종은 개수만 밝히고 값은 적지 않았습니다. 통신사·국적·VPN 여부처럼 우리에게 계측 수단이 없는 항목은 추정하지 않고 “모른다”로 남겨 뒀습니다.
