
티셔츠에 프린트된 코드가 진짜 '돌아가는' 스크립트였습니다
티셔츠에 알록달록한 코드 무늬가 박혀 있는 거, 한 번쯤 보셨죠? 대부분은 그냥 분위기용 그래픽이라 자세히 보면 아무 의미 없는 글자 나열인 경우가 많아요. "개발자st 감성" 내는 용도인 거죠. 그런데 한 개발자가 유니클로 티셔츠에 찍힌 문양을 진지하게 들여다봤더니, 그게 진짜로 컴퓨터에서 실행되는 bash 스크립트였다는 걸 발견했어요. 심지어 그냥 코드도 아니고, 일부러 사람이 못 읽게 배배 꼬아 놓은 난독화(obfuscation) 스크립트였고요. 글쓴이는 이걸 두고 "아카마이(Akamai) 같은 CDN이 아니라, 유니클로 매장이 소비자에게 코드를 배포하는 셈"이라고 재치있게 표현했더라고요.
난독화된 bash, 한 겹씩 벗겨보면
여기서 '난독화'가 뭔지부터 짚고 갈게요. 난독화는 코드가 하는 일은 그대로 두면서 사람 눈으로는 읽기 어렵게 일부러 뒤죽박죽 만드는 기법이에요. 예를 들어 echo hello라고 쓰면 될 걸, 글자를 아스키 코드 숫자로 바꾸고, base64로 인코딩하고, 변수에 쪼개 담았다가 eval로 다시 합쳐서 실행하는 식이죠.
특히 이 스크립트는 '자기 자신을 평가(self-evaluating)'하는 구조였는데요. bash에서 eval "$변수"나 $(명령) 같은 문법은 문자열을 그대로 명령어로 실행해버려요. 그래서 겉보기엔 의미 없는 문자열 덩어리처럼 보여도, 실행하는 순간 그 안에서 진짜 명령이 튀어나오는 거예요. 마치 러시아 인형 마트료시카처럼 껍질 안에 또 껍질이 들어있는 구조죠.
이런 걸 해독할 때 절대 하면 안 되는 게 그냥 실행해보는 거예요. 무슨 짓을 할지 모르니까요. 안전하게 푸는 정석은 eval을 echo로 바꿔서 "실행 대신 화면에 뿌리게" 만드는 거예요. 그러면 한 겹이 벗겨진 코드가 눈에 보이고, 또 그 안의 base64 -d나 치환 로직을 하나씩 손으로 풀어가면서 마트료시카를 한 겹씩 열어보는 거죠.
사실 이건 보안 실무의 축소판이에요
이런 난독화 기법은 사실 악성코드(멀웨어)가 백신을 피하려고 흔히 쓰는 수법이에요. 침해사고 대응이나 CTF(보안 경진대회)에서 로그에 박힌 수상한 base64 문자열, 웹셸, 파워셸 한 줄 공격을 만나면 정확히 이 과정을 거쳐요. 그래서 티셔츠 하나 해독하는 게 장난 같아 보여도, 실제로는 리버스 엔지니어링 근육을 그대로 쓰는 훈련인 셈이죠. 옷에 프린트하기 전에 누군가 이걸 검수는 했을까 싶은, 공급망 관점의 웃픈 포인트도 있고요.
한국 개발자에게
bash 난독화 해독은 CTF 입문이나 보안 실무에 발 담그기 딱 좋은 소재예요. 거창한 장비 없이 리눅스 터미널 하나면 연습할 수 있거든요. 특히 eval, 프로세스 치환 $(...), base64, 변수 간접 참조 같은 문법에 익숙해지면, 남이 짜 놓은 알 수 없는 스크립트를 만났을 때 겁먹지 않게 돼요. 반대로 내가 셸 스크립트를 배포할 땐 절대 이렇게 꼬지 말고 읽기 좋게 짜는 게 예의라는 것도 같이 기억해두면 좋겠네요.
정리하면, "겉보기 무의미해 보이는 코드도 실행되면 의미가 생긴다"는 게 이 이야기의 핵심이에요. 여러분이 입고 있는 옷이나 머그컵의 코드 무늬, 혹시 진짜 돌아가는 코드는 아닐까요? 발견하면 어떻게 해독해볼지 한번 이야기해봐요.
🔗 출처: Hacker News