웃긴 Lobsters · 1일 전

초보자 골탕 먹이던 '어설픈 해커' 역관광 보낸 천재적 트랩 썰

핵심 요약
  • 초보자들에게 악성 명령어를 속여 실행하게 만드는 이들을 골탕 먹이기 위해, 내용을 확인해보려 뜯어보는 순간 컴퓨터가 먹통이 되는 포크 밤 트랩을 설계했습니다.
  • 바깥쪽의 디코딩 및 실행 명령어는 페이크였으며, 문자열 인자 확장(expansion) 단계에서 백틱 속 포크 밤이 곧바로 격발되도록 만들어 낚시꾼들의 호기심을 역이용했습니다.
  • 실제로 초보자를 사냥하던 이들이 이 트랩에 속아 넘어가 스스로 컴퓨터를 뻗게 만들었고 기술 커뮤니티에서 분석 글까지 올라오며 화제가 되었습니다.
요약 초보자들에게 위험한 셸 명령어를 몰래 속여서 실행하게 만드는 장난을 치는 사람들이 종종 있습니다. 예를 들어 base64로 인코딩된 문자열을 풀게 만들어 현재 디렉터리의 모든 파일을 삭제하는 'rm -rf *' 명령어를 돌리게 만드는 수법이 대표적입니다. 개발자 비다르(Vidar)는 이런 악질적인 장난을 치는 이들을 역으로 골탕 먹이기 위해 치밀하게 설계된 '역관광 포크 밤(fork bomb)' 트랩을 고안했습니다. 이 트랩의 핵심은 초보자가 아닌, 오히려 '어설프게 아는 해커'들을 노렸다는 점입니다. 이들은 초보자용 낚시 명령어를 보면 무엇이 들어있는지 확인하려고 바깥쪽 껍데기 명령어인 `$(..)`를 지우고 실행해 보곤 합니다. 작성자는 이를 역이용해, 디코딩이나 실행(eval), 에코(echo) 등의 외부 명령어는 모두 시선을 돌리기 위한 미끼로만 두고, 쌍따옴표 내부의 문자열 확장(command expansion) 자체만으로 즉시 터지는 포크 밤을 심었습니다. 즉, 무슨 악성 코드가 들어있는지 까보려고 `echo "..." | uudecode` 명령어를 실행하는 순간 곧각 백틱(`` ` ``) 안의 포크 밤이 실행되어 컴퓨터가 뻗고 재부팅을 해야만 하는 상황을 만든 것입니다. 작성자는 트랩을 완성하기 위해 여러 차례 개선 과정을 거쳤습니다. 초기 버전에서는 흔히 쓰는 base64를 사용했으나 눈에 너무 띄었고 작은따옴표로 인해 코드가 금방 들통났습니다. 이에 일반 텍스트보다 특수문자가 많이 섞이는 uudecode 형식을 흉내 내어 의심을 피했습니다. 또한 공백 없이 문자를 숨기기 위해 중괄호 확장(brace expansion) 기법을 사용해 시각적인 거부감을 없앴습니다. 실제로 초보자들을 저격하며 골탕 먹이던 여러 '자칭 해커'들이 이 함정에 그대로 걸려들어 컴퓨터를 먹통으로 만들었고, 민망해하며 트랩에 당했음을 털어놓았다고 합니다. 작성자는 잊고 있었으나 1년 뒤 해외 기술 Q&A 커뮤니티인 SuperUser에 분석 글이 올라올 정도로 화제가 되었습니다.
해외 반응 번역
“r{,foo}는 r foo로 확장된다” – 이거 “r rfoo”로 확장되는 거 아닌가요?
멋지네요!
Sponsored · 광고