
1. 시작하기 전에
모의침투를 진행하는 경우 우리는 보통 Host PC에 vmware나 virtual box같은 프로그램을 이용하여 VM환경에서 Kali Linux를 구동한다.
나의 경우는 모니터 2개를 활용하여 하나의 모니터에선 Kali를 돌리고, 다른 모니터는 Host PC(윈도우)에서 검색이나 Note taking용으로 활용하고 있고, 일반적으로 vmware에서 양방향 copy-paste를 enable시켜놓으면 부드럽게 host pc와 vm을 이동해가며 커맨드등을 복붙할 수 있다. 만약 이 블로그의 글을 참고하여 tmux를 세팅하려 한다면 아래 사진을 참고하여 옵션을 활성화하길 바란다. virtual box에도 동일한 옵션이 존재한다.
필연적으로 Pentest를 진행하다 보면 Kali에서 동시의 여러개의 Shell을 써야하기 마련이다. (rev Shell, msfconsole, nmap scan 등)
여러개의 Shell을 켜놓고 알트탭으로 왔다갔다하는것도 한두번이지, 굉장히 번거로운 일이기 때문에 tmux를 활용하여 Shell 화면을 분할하여 이용하는 방법을 사용하고 있다. 디폴트로는 설치되어있지 않기 때문에 (2024.3 버전 kali iso부터는 설치되어있다고 알고있다) 간단하게 설치해주도록 하자.
sudo apt install tmux (tmux 설치)
tmux (tmux 세션 실행)
참 편리한 tmux지만, 큰 문제점이 존재한다. 지금부터 문제점과 원인, 그리고 해결법을 간단히 알아보자.
2. Default Tmux Session
tmux는 자체적인 커맨드를 이용하여 조작하는, 일반적인 쉘이 아닌 별도의 세션이다. 처음 tmux로 세션을 만든다면 마우스 클릭 등의 상호작용이 일반적인 nix와는 달리 잘 먹히지 않는다는 사실을 금방 발견할 것이다. copy & paste나 기타 일반적인 shell의 상호작용을 위해서는 ctrl+b를 눌러 커맨드 입력 상태로 (마치 vi같다고 생각하면 편하다) 들어가 커맨드를 입력해야 한다. 대표적인 커멘드들을 알아보자 :
- ctrl+b+[ : copy, buffer에서 붙여넣기
- ctrl+b+] : paste, buffer에서 붙여넣기
- ctrl+b+” : 화면 가로분할
- ctrl+b+% : 화면 세로분할
이런 식으로 조금 복잡한 방식을 이용하여 shell과 상호작용을 해야한다. 화면 분할을 이용하면 아래와 같이 분할된다.
쉘들을 넘어다니기 위해서는 마우스를 클릭하면 될 것 같지만 이것 또한 당연히 안 된다. 기본 상태에서는 커맨드들을 입력하여 shell들을 넘어다녀야 하고, 이를 위해서는 각 shell들의 session number를 알고 있어야 하는데, 이럴거면 차라리 tmux를 사용하지 않는 편이 편하다.
또한 copy-paste를 위한 buffer도 따로 존재하기 때문에 system buffer를 사용하는 일반 복붙 활용이 불가능하다. 자체의 buffer를 활용하기 때문에 tmux 내부에서 자기들끼리만 copy paste가 가능하다. 이는 인터넷에서 많은 커맨드들을 복사해넣어야하는 (또는 note taking을 위해 붙여넣기가 필요한) Pentest의 특성상 아주 큰 제약이라고 볼 수 있다. 위에서 말한 vmware의 bidirectional 옵션을 선택했더라도 사용하는 buffer가 다르기 때문에 불가능하다. 그럼 tmux를 사용하지 않는 편이 편한걸까?
3. 나의 tmux setting
tmux session을 제대로 활용하기 위해선, config을 커스터마이징 할 필요가 있다. kali 뿐만 아닌 여러가지 os에서 충분히 테스트를 해 보았으므로 안정성은 보장한다.
일단 xclip을 설치하자.
sudo apt install xclip
xclip은 system buffer로의 복사를 강제하는 프로그램이다.
그리고 내 home directory에 .tmux.conf 파일을 작성할 것이다. 나의 config 파일은 다음과 같다:
set -g mouse on (shell 간의 마우스 이동 활성화)
set-window-option -g mode-keys vi (vi커맨드라인 활성화)
bind P run "xclip -out -selection clipboard | tmux load-buffer - && tmux paste-buffer" (ctrl+b+P로 system buffer에서 붙여넣기)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -selection clipboard'(ctrl+b+[+space로 복사모드, 선택 후 y로 복사하기)
이렇게 설정한 후, tmux를 실행하면 된다.
sudo tmux -f ~/.tmux.conf
마우스 사용과 system buffer로의 copy paste 기능이 원활하게 작동하는걸 확인할 수 있을 것이다.
- tmux의 최근 버전을 다운로드 한다면, shift key를 누른 상태로 마우스를 사용해 평범하게 우클릭하여 복사&붙여넣기가 가능해졌는데, (아래 사진 참고)
paste의 경우 확실히 별 문제 없이 작동하지만 copy의 경우 스크롤을 해도 shell이 위, 아래로 이동하지 않기 때문에 딱 지금 보이는 범위만 복사 가능하다는 점이 한계로 남는다. 위의 config를 활용하면 당연히 문제없이 (마우스가 아닌 키보드를 이용해 범위선택을 하기 때문에) 얼마든지 원하는 범위의 복사가 가능하다.
Source
- Proving Grounds
- Me!