게임은 게임 불감증 때문에 손도 안 대고 있었는데, 반년 전에 짧게 했던 게 Buckshot Roullette이라는 인디 게임이었습니다. 단판으로 도박 요소를 즐길 수 있다는 게 좋았습니다. 그러다가 어제 스팀 라이브러리를 둘러보다가 Hacknet이 보여서 잠깐 플레이해 보았습니다.
Hacknet?
Hacknet은 터미널 기반의 몰입형 해킹 시뮬레이터입니다. 간단한 리눅스 명령어만 다뤄서 플레이하는 데는 별 문제없었습니다. 리눅스 명령어를 따로 숙지하고 있지 않더라도 help 명령어로 명령어 리스트를 볼 수 있어서 플레이하는 데 지장은 없습니다.
그래도 파일 처리 관련 리눅스 명령어는 한번 복기하고 가도 괜찮겠죠?
파일 관련 리눅스 명령어 모음
1. 파일 및 디렉토리 관리
ls : 디렉토리 목록 확인
ls -l : 상세 정보 보기
ls -a : 숨김 파일 포함 보기
cd : 디렉토리 이동
cd /path/to/directory : 특정 경로로 이동
cd .. : 상위 디렉토리로 이동
pwd : 현재 디렉토리 경로 확인
mkdir : 새 디렉토리 생성
mkdir new_directory
rm : 파일/디렉토리 삭제
rm filename : 파일 삭제
rm -r directory : 디렉토리와 내부 파일 삭제
cp : 파일/디렉토리 복사
cp source_file target_file
mv : 파일/디렉토리 이동 또는 이름 변경
mv old_name new_name
2. 파일 내용 확인
cat : 파일 내용 출력
cat file.txt
less : 파일 내용을 한 화면씩 보기
head / tail
head -n 10 file.txt : 파일의 처음 10줄 출력
tail -n 10 file.txt : 파일의 마지막 10줄 출력
3. 파일 권한 및 소유 관리
chmod : 파일 권한 변경
chmod 755 file.txt
chown : 파일 소유자 변경
chown user:group file.txt
4. 파일 검색
find : 파일 검색
find /path -name "filename" : 특정 이름의 파일 찾기
grep : 파일 내용에서 특정 문자열 검색
grep "search_term" file.txt
5. 압축 및 압축 해제
tar : tar 파일 생성 및 압축 해제
압축: tar -cvf archive.tar files/
압축 해제: tar -xvf archive.tar
gzip 압축 포함: tar -czvf archive.tar.gz files/
gzip 압축 해제: tar -xzvf archive.tar.gz
zip : zip 파일 생성
zip archive.zip file1 file2
unzip : zip 파일 해제
unzip archive.zip
리뷰
게임 초반에는 흥미로운 부분이 많을 수도 있긴 할 텐데 그건 잠깐이고 어느새 명령어 노가다만 반복하고 있는 자신을 볼 수 있습니다. probe 명령어로 프록시나 방화벽의 유무, 포트 목록을 확인합니다.
프록시는 관리자 권한을 가지고 있는 컴퓨터에서 shell을 키면 Overload를 걸 수 있는데 이 숫자가 많으면 많을수록 프록시를 뚫는 속도가 빨라집니다. 참고로 프록시가 있는 서버는 프록시를 뚫기 전에는 포트를 열 수 없습니다.
포트마다 해당 포트 전용 해킹 툴이 있습니다. 에셋 서버에서 본인의 컴퓨터에 scp 명령어로 다운로드해놓지 않으면 사용할 수 없으니 보이는 즉시 다운로드 해놓아야 합니다. 이것 때문에 나중에 미션이 막히기도 합니다. 크랙에 필요한 포트의 개수가 충족되면 PortHack을 실행하면 시스템 관리자 권한을 얻을 수 있게 되어 파일 시스템에 접근할 수 있습니다. 개인의 컴퓨터를 터는 컨셉이다보니 19禁 텍스트도 존재합니다..
이번 미션은 대화 기록에서 비밀번호를 터는 미션입니다. 비밀번호가 어떻게 *******.. 최근에도 특정 공공기관의 시스템의 비밀번호가 12345라고 하는 걸 본 거 같긴 한데, 보안 불감증의 대표적인 사례라 생각합니다. 이 게임에서의 eOS(iOS 가칭) 관리자 로그인 비밀번호도 비슷한 사례라 볼 수 있겠습니다. 키보드 배열에 맞춰서 qwer1234, 1qaz2wsx 라든가 0258, 0000 같은 유형의 비밀번호는 설정하지 않는 것이 좋겠습니다. 그런데 비밀번호가 복잡하다고 보안성이 더 좋을까요? 가입할 때 (1) 최소 8자 이상에 (2) 대문자, 소문자, 숫자, 특수문자를 각각 하나씩 포함해해야 한다는 패스워드 규칙을 본 적이 있을 겁니다. Bill Bur라는 아저씨가 그 원흉입니다.
유저들은 늘 개발 의도에 따라 행동하지 않습니다. 저런 제약을 걸면 귀찮기만 할 뿐이죠. 비밀번호가 복잡해질수록 사람들은 오히려 단순한 패턴으로 비밀번호를 구성하는 경향이 있습니다. lvlYpAS2W@rol!SG00o!를 의도했겠지만 실상은 PASSword123! 같은 형태로 사용하겠죠.
그래서 이 비밀번호를 첨부하고 전송하면?
진짜 **같은 비밀번호.. 이렇게 미션이 끝나게 됩니다.
로그를 하나하나 뒤져 보다 보면 개그 요소들도 많습니다.
한국인이 번역한 게 아니라서 그런지 번역이 어색하고 나중에는 게임에 지장이 생길 정도로 불편합니다. 차라리 영어 원문으로 게임을 진행했더라면 좀 더 빠르게 클리어할 수 있었지 않았나 싶습니다.
다른 해커의 서버를 털었더니 역으로 제 서버가 털렸습니다. 시스템 파일을 날려버려서 블루 스크린까지 뜨게 되었고..
오로지 터미널로만 저 x-server.sys 파일을 찾아서 내 컴퓨터에 복구해야 합니다.
방화벽 같은 경우에는 analyze 명령어로 특정 키를 찾아 solve 명령어에 넣어 뚫어야 합니다. 이게 한 번만에 키를 뽑아낼 수 있는 게 아니라 여러 번 노가다를 통해 해야 합니다. 심지어 Trace 제한 시간에 걸리게 된다면...
IP 주소를 바꾸는 절차를 거쳐야 합니다. 이게 상당히 귀찮습니다. 그러니 Trace에 걸리지 마십시오.
개인적으로 PortHack을 실행했을 때 보이는 기하학적인 패턴들이 맘에 듭니다. 이건 후반부에 멋진 연출이 있으니 직접 해보면 좋을 듯.
후기
중반부에 조금 루즈해지는 부분이 있긴 했지만 그래도 꽤 신경 써서 만든 게 보여서 나쁘지 않은 경험이었습니다. 해킹 조무사 게임보다는 좀 더 해킹에 근접한 걸 해보고 싶다면 워게임 사이트가 많으니 그런 사이트에서 연습하면 좋습니다. 실제 서비스 사이트에는 시도조차 하지 마시고.. 네..