본문 바로가기
일상속힐링/Tools

칼리 리눅스(Kali Linux)를 설치한 뒤, 해야 할 10가지 작업

by 사이테일 2018. 12. 24.

출처 : https://null-byte.wonderhowto.com/how-to/top-10-things-do-after-installing-kali-linux-0186450/


 

Top 10 Things to Do After Installing Kali Linux

칼리 리눅스(Kali Linux)는 기본적으로 일상적인 침투 테스트를 쉽게 진행하는데 필요한 모든 것을 갖추고 있지는 않다. 하지만 몇 가지 팁이나 트릭 및 애플리케이션을 통해 Kali를 보다 전문적으로 사용하는 것이 가능하다.

대부분의 Linux 배포판은 커스터마이징이 가능하다. 따라서 침투 테스팅 배포를 약간 개인화(personalizing)할 수있다. 우리는 몇 가지 명령만으로 좋아하는 소프트웨어를 설치하고, 추가 사용자 계정을 만들고, 소프트웨어를 올바르게 구성하고, 터미널과의 상호작용을 최적화하는 등의 일들을 자동화한다. 이처럼 운영체제와의 상호 작용을 향상시키기 위해 할 수 있는 몇 가지 작업이 있다.

https://www.youtube.com/watch?v=8VL0K0rFgxw

 

Install Git

Git은 오픈소스 소프트웨어 버전관리 애플리케이션이다. 공동으로 코드를 공유하고 편집하는데 사용할 수 있지만 GitHub에서 찾은 코드 저장소를 복사(or “cloning“)하기 위한 기본 도구로도 일반적으로 참조된다.

Git은 다음과 같은 apt-get 명령을 사용해 설치할 수 있다.

apt-get install git

 

Configure Bash Aliases

Bash 별칭(aliases)은 커스터마이징된 명령행 단축키를 작성하는기에 훌륭하다. 예를 들어, ls 명령을 재할당(reassign)하여, 우리가 자주 사용하는 인자(arguments)를 자동으로 사용할 수 있다. 다음은 정상적인 ls 출력의 예시다.

ls

androidbins.txt                                      folder-pictures.png     smtp.cracked         text-x-generic.png
bogus_gmail.creds                                    folder.png              smtp.list            Windows-10
dumpzilla-b3075d1960874ce82ea76a5be9f58602afb61c39   package-x-generic.png   text-x-generic.ico  'Windows 10 Icons'

다음은 ls 별칭을 작성한 뒤 다시 실행한 결과다.

ls

total 220K
-rw-------  1 root root  15K Aug 24  2015  folder-pictures.png
-rw-------  1 root root 8.7K Aug 24  2015  folder.png
-rw-------  1 root root  11K Aug 24  2015  package-x-generic.png
-rw-------  1 root root 5.5K Sep  3  2015  text-x-generic.png
drwxr-xr-x 12 root root 4.0K May 31 00:44 'Windows 10 Icons'/
drwxr-xr-x 18 root root 4.0K May 31 00:44  Windows-10/
-rwxr-x---  1 root root 103K May 31 00:49  text-x-generic.ico*
drwxr-xr-x  5 root root 4.0K Jun 11 21:57  dumpzilla-b3075d1960874ce82ea76a5be9f58602afb61c39/
-rw-r--r--  1 root root   52 Jul  5 18:13  bogus_gmail.creds
-rw-r--r--  1 root root  15K Jul  5 18:28  smtp.list
-rw-r--r--  1 root root  181 Jul  5 18:43  smtp.cracked
-rw-r--r--  1 root root  23K Jul 23 18:18  androidbins.txt
drwxr-xr-x  5 root root 4.0K Jul 23 19:22  ./
drwxr-xr-x 23 root root 4.0K Aug  9 04:25  ../

훨씬 자세한 출력을 얻을 수 있다. ls 명령은 이제 -l, -a, -t, -h 및 -r 인자를 자동으로 사용한다. 이 모든 인자들은 ls가 목록화(-l) 형식을 사용하고, 숨김 파일을 포함한 모든 파일(-a)을 나열하고, 파일 크기를 사람이 읽을 수 있는 형식(e.g., 1K, 234M, 5G)으로 보여준다.

또한 수정 시간(-t)을 기준으로 출력을 정렬하고, 목록의 순서를 역순으로 수정(-r)하여 최근에 수정한 파일을 터미널 맨 아래쪽에 표시한다. 이러한 인자의 모음은 자신의 스타일에 맞게 수정할 수 있다.

별칭을 만들려면 nano와 같은 텍스트 편집기를 사용하여 /root/.bash_aliases를 열고, 다음과 같은 라인을 추가하면 된다.

alias ls='ls --color=always -rthla'

좀 더 나아가, .bash_aliases 파일에 더 복잡한 함수를 추가할 수도 있다. 다음은 Kali를 완전히 최신 상태로 유지하도록 설계된 함수의 예시다.

function apt-updater {
        apt-get update &&
        apt-get dist-upgrade -Vy &&
        apt-get autoremove -y &&
        apt-get autoclean &&
        apt-get clean &&
        reboot
        }

.bash_aliases 파일에 대한 변경 사항을 저장한 후, 터미널을 재시작한다. 새로 생성된 apt-updater 함수를 실행하면 시스템을 자동으로 업데이트하고 유지 관리하는 일련의 apt-get 명령이 호출된다. 앰퍼샌드(&&)는 이전 명령이 실패할 경우 함수가 다음 명령을 계속 수행하지 않도록 한다.

apt-updater

Bash 별칭에 대한 더 자세한 내용은 Kody’s “Set Up a MacOS System for Wi-Fi Packet Capturing” 글을 참조하면 된다.

 

Create a New Low Privileged User

Chromium 이나 Tor 브라우저와 같은 애플리케이션은 절대로 루트 권한으로 열리거나 사용되어서는 안된다. 이러한 애플리케이션은 낮은 수준의 사용 권한을 사용함으로써 어느 정도의 보안을 제공한다. 일부 사용자는 이러한 활동에 대해 권한이 낮은 계정을 부여하는 편이 나을 수 있다.

이러한 개념은 Takhion’s “Lock Down Kali Linux for Safe Desktop Use” 기사에서 자세히 다루므로 이를 참조하면 된다.

 

Install a Terminal Multiplexer

멀티플렉서(multiplexer)는 하나의 단일 창 안에 여러 터미널 세션을 열 수 있는 타일링 터미널 에뮬레이터(tiling terminal emulator)이다. 이 도구의 주요 장점은 모든 개방형 터미널 세션을 한 번에 볼 수 있고, 창을 서로 겹치지 않게 할 수 있다는 것이다. 다음은 멀티플렉서의 실행 화면이다.

 

 

 

많은 종류의 멀티플렉서가 있다. 위 그림의 Tilix는 오픈소스이며, 신뢰할 수 있는 도구 중 하나다. 대안으로 tmux 또는 screen을 사용해도 된다.

apt-get install tilix

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libgtkd-3-0 libphobos2-ldc-shared78 libvted-3-0 tilix-common
Suggested packages:
  python-nautilus
The following NEW packages will be installed:
  libgtkd-3-0 libphobos2-ldc-shared78 libvted-3-0 tilix tilix-common
0 upgraded, 5 newly installed, 0 to remove and 466 not upgraded.
Need to get 10.7 MB of archives.
After this operation, 49.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

 

Install Your Favorite Hacking Tools

Kali의 일부 버전은 수백 가지 해킹 도구가 사전 설치되어 있지 않은 미니멀리스트 펜 테스터(minimalist pentester)를 목표로 한다. 즉, 우리가 사용할 도구를 수동으로 설치해야한다. 우리가 사용하는 도구는 전문 기술과 분야에 따라 다르지만 (그럼에도 불구하고)인기있는 몇가지 해킹 도구는 다음과 같다.

  • Aircrack-ng: Wireless WEP/WPA cracking utilities.
  • BeEF: Browser exploitation framework via web applications.
  • Burp Suite: Graphical application designed for web application security.
  • Hydra: Login password brute-forcing utility.
  • Nikto: Web server security scanner.
  • Maltego: Open-source forensics and intelligence gathering.
  • Nmap: Port scanner and network mapper.
  • Wireshark: Graphical application for network traffic analysis.

이러한 도구들은 다음 명령을 사용해 설치할 수 있다.

apt-get install maltego metasploit-framework burpsuite wireshark aircrack-ng hydra nmap beef-xss nikto

Reading package lists... Done
Building dependency tree
Reading state information... Done
hydra is already the newest version (8.6-1kali1).

The following NEW packages will be installed:
  beef-xss binfmt-support burpsuite fastjar fonts-droid-fallback fonts-lato
  fonts-noto-mono ghostscript gsfonts imagemagick imagemagick-6-common
  imagemagick-6.q16 jarwrapper java-wrappers javascript-common libc-ares2
  libcupsfilters1 libcupsimage2 libdjvulibre-text libdjvulibre21 libdouble-conversion1
  libfftw3-double3 libgmp-dev libgmpxx4ldbl libgs9 libgs9-common libhttp-parser2.8
  libijs-0.35 libilmbase23 libjbig2dec0 libjs-jquery libjs-jquery-easing
  libjs-jquery-fancybox libjs-jquery-mousewheel libjs-jquery-ui libjs-source-map
  libjs-uglify libjxr-tools libjxr0 liblqr-1-0 liblua5.2-0 libmagickcore-6.q16-6
  libmagickcore-6.q16-6-extra libmagickwand-6.q16-6 libnetpbm10 libnl-route-3-200
  libopenexr23 libpaper-utils libpaper1 libpcre2-16-0 libqt5core5a libqt5dbus5
  libqt5gui5 libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediagsttools5
  libqt5multimediawidgets5 libqt5network5 libqt5opengl5 libqt5printsupport5 libqt5svg5
  libqt5widgets5 libruby2.5 libsbc1 libsmi2ldbl libspandsp2 libssh-gcrypt-4 libuv1
  libwhisker2-perl libwireshark-data libwireshark11 libwiretap8 libwmf0.2-7
  libwscodecs2 libwsutil9 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0
  libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxkbcommon-x11-0 libyaml-0-2
  maltego netpbm nikto nodejs nodejs-doc openjdk-8-jre openjdk-8-jre-headless
  qt5-gtk-platformtheme qttranslations5-l10n rake ruby ruby-addressable ruby-ansi
  ruby-atomic ruby-buftok ruby-celluloid ruby-celluloid-io ruby-daemons
  ruby-dataobjects ruby-dataobjects-mysql ruby-dataobjects-postgres
  ruby-dataobjects-sqlite3 ruby-dev ruby-did-you-mean ruby-diff-lcs ruby-dm-core
  ruby-dm-do-adapter ruby-dm-migrations ruby-dm-serializer ruby-dm-sqlite-adapter
  ruby-docile ruby-domain-name ruby-em-websocket ruby-equalizer ruby-erubis
  ruby-eventmachine ruby-execjs ruby-faraday ruby-geoip ruby-hitimes ruby-http
  ruby-http-cookie ruby-http-form-data ruby-http-parser.rb ruby-json ruby-librex
  ruby-libv8 ruby-memoizable ruby-mime-types ruby-mime-types-data ruby-minitest
  ruby-mojo-magick ruby-msfrpc-client ruby-msgpack ruby-multi-json ruby-multipart-post
  ruby-naught ruby-net-telnet ruby-nio4r ruby-oj ruby-parseconfig ruby-power-assert
  ruby-public-suffix ruby-qr4r ruby-rack ruby-rack-protection ruby-ref ruby-rqrcode
  ruby-rspec-expectations ruby-rspec-support ruby-rubydns ruby-simple-oauth
  ruby-simplecov ruby-simplecov-html ruby-sinatra ruby-sqlite3 ruby-term-ansicolor
  ruby-test-unit ruby-therubyracer ruby-thread-safe ruby-tilt ruby-timers ruby-tins
  ruby-twitter ruby-uglifier ruby-unf ruby-unf-ext ruby-xmlrpc ruby-zip ruby2.5
  ruby2.5-dev ruby2.5-doc rubygems-integration thin wireshark wireshark-common
  wireshark-qt zip
The following packages will be upgraded:
  aircrack-ng libcups2 libnl-3-200 libnl-genl-3-200 libxkbcommon0 metasploit-framework
  nmap nmap-common
8 upgraded, 182 newly installed, 0 to remove and 458 not upgraded.
Need to get 381 MB of archives.
After this operation, 616 MB of additional disk space will be used.
Do you want to continue? [Y/n] y 

 

Install the Latest Version of Tor

Tor은 Kali 저장소에서 사용할 수 있지만, 일부 익명 소프트웨어는 출처(torproject.org)에서 직접 얻어야 한다. 또한 Kali의 Tor 버전은 안정적으로 유지 관리되거나 업데이트되지 않는다. 이는 중요한 안정성과 보안 업데이트가 누락될 수 있음을 의미한다.

Tor Project 저장소를 APT 저장소 목록에 추가해야 한다.

echo 'deb https://deb.torproject.org/torproject.org stretch main
deb-src https://deb.torproject.org/torproject.org stretch main' > /etc/apt/sources.list.d/tor.list

그런 다음, Tor Project 패키지 서명 키(signing key)를 다운로드하여 APT 키링(keyring)으로 가져온다.

wget -O- 'https://pgp.mit.edu/pks/lookup?op=get&search=0xA3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89' | sudo apt-key add -

--  https://pgp.mit.edu/pks/lookup?op=get&search=0xA3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
Resolving pgp.mit.edu (pgp.mit.edu)... 18.9.60.141
Connecting to pgp.mit.edu (pgp.mit.edu)|18.9.60.141|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 47255 (46K) [text/html]
Saving to: ‘STDOUT’

서명 키가 추가되면 “OK” 출력이 표시된다. 그런 다음, 아래와 같이 apt-get 명령을 사용하여 APT를 업데이트 한다.

apt-get update

Hit:1 http://downloads.metasploit.com/data/releases/metasploit-framework/apt lucid InRelease
Get:2 https://deb.torproject.org/torproject.org stretch InRelease [4,965 B]
Get:4 https://deb.torproject.org/torproject.org stretch/main Sources [1,169 B]
Get:5 https://deb.torproject.org/torproject.org stretch/main amd64 Packages [2,400 B]
Hit:3 http://archive-3.kali.org/kali kali-rolling InRelease
Fetched 8,534 B in 8s (1,091 B/s)
Reading package lists... Done

마지막으로, 아래 명령을 사용하여 Tor를 설치한다.

apt-get install tor deb.torproject.org-keyring

Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  mixmaster torbrowser-launcher socat tor-arm apparmor-utils obfs4proxy
The following NEW packages will be installed:
  deb.torproject.org-keyring
The following packages will be upgraded:
  tor 

 

Configure FIle Sharing with Syncthing

Syncthing은 Jakob Borg가 개발한 크로스 플랫폼, 개인용, 경량 파일 동기화 도구이다(Dropbox 대안). Syncthing은 안전한 파일 공유를 쉽게 해준다.

Syncthing 설치 및 구성에 대한 단계별 내용은 가이드라인(https://null-byte.wonderhowto.com/how-to/securely-sync-files-between-two-machines-using-syncthing-0185999/)을 참조하면 된다.

 

Install a Code Editor

Atom은 무료 오픈 소스 기능이 풍부하고, 커스터마이징이 용이한 텍스트 에디터다. 또 다른 주목할만한 테스트 에디터에는 Geany와 Gedit이 있다.
(sublime과 vscode도 괜찮은 것 같다.)

Atom을 설치하려면 웹사이트에서 최신 데비안 설치 프로그램을 다운로드 해야한다. 그런 다음, 터미널에서 다음의 apt-get 명령을 사용해 피룡한 종속성을 설치한다.

apt-get install gvfs gvfs-common gvfs-daemons gvfs-libs gconf-service gconf2 gconf2-common gvfs-bin psmisc

Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following NEW packages will be installed:
   gconf-service (3.2.6-4.1)
   gconf2 (3.2.6-4.1)
   gconf2-common (3.2.6-4.1)
   gvfs-bin (1.36.2-1)
   libgconf-2-4 (3.2.6-4.1)
   psmisc (23.1-1+b1)
The following packages will be upgraded:
   gvfs (1.36.1-1 => 1.36.2-1)
   gvfs-common (1.36.1-1 => 1.36.2-1)
   gvfs-daemons (1.36.1-1 => 1.36.2-1)
   gvfs-libs (1.36.1-1 => 1.36.2-1)
4 upgraded, 6 newly installed, 0 to remove and 462 not upgraded.
1 not fully installed or removed.
Need to get 3,317 kB of archives.
After this operation, 8,909 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

마지막으로 명령줄 패키지 관리자(command line package manager)인 dpkg를 install (-i) 인자와 함께 사용한다.

dpkg -i ~/Downloads/atom-amd64.deb

(Reading database ... 191882 files and directories currently installed.)
Preparing to unpack atom-amd64.deb ...
Unpacking atom (1.29.0) over (1.29.0) ...
Setting up atom (1.29.0) ...
Processing triggers for desktop-file-utils (0.23-3) ...
Processing triggers for mime-support (3.60) ...

설치가 끝나면, Atom을 애플리케이션 메뉴에서 사용할 수 있다.

 

Clone Rubber Ducky Encoder

The USB Rubber Ducky는 유명한 키스트로크 인젝션 도구(keystroke injection tool)다. DuckToolKit 웹사이트를 사용하면 ducky 페이로드를 쉽게 만들 수 있지만, 침투 테스팅에서 클라이언트 정보를 임의의 웹사이트와 공유하는 것은 안전하지 않다. 페이로드 콘텐츠를 제 3자 웹사이트에 업로드하는 것은 위험할 수 있다.

대신 Git을 사용하여 USB Ducky 저장소(https://github.com/hak5darren/USB-Rubber-Ducky)를 복제하고, 페이로드를 로컬에서 인코딩할 수 있다.

git clone https://github.com/hak5darren/USB-Rubber-Ducky

Cloning into 'USB-Rubber-Ducky'...
remote: Counting objects: 1657, done.
remote: Total 1657 (delta 0), reused 0 (delta 0), pack-reused 1657
Receiving objects: 100% (1657/1657), 31.88 MiB | 162.00 KiB/s, done.
Resolving deltas: 100% (745/745), done.
Checking out files: 100% (1509/1509), done.

그런 다음, USB-Rubber_ducky/Encoder/ 디렉토리를 변경(cd)하고, 다음의 java 명령을 사용하여 제3자 웹사이트 없이 ducky 페이로드 인코딩을 시작한다.

cd USB-Rubber-Ducky/Encoder/
java -jar encoder.jar -i input_payload.txt -o inject.bin 

 

Change SSH Keys & Default Password

모든 Kali Linux 설치의 기본 암호(toor)는 동일하며, 공격을 자동화하기 쉽다. 또한 기본 SSH 키를 사용하면 SSH를 통해 라즈베리 파이와 같은 것을 제어할 때, 침입자가 통신을 가로채는 것을 허용할 수 있다.

SSH 키를 변경하려면, 먼저 디렉토리를 변경해야 한다. 아래의 두 명령을 수행하면, SSH가 기본키로 재설정된다.

cd /etc/ssh/
dpkg-reconfigure openssh-server

rescue-ssh.target is a disabled or a static unit, not starting it.

이제 Kali 시스템의 암호로 passwd root를 입력한 다음, 새 암호를 입력한다. 루트로 로그인하지 않은 경우, 이 작업을 수행하기 전에 현재 비밀번호를 묻는 메시지가 나타날 수 있다.

passwd root

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully