백박스 리눅스를 활용한 모의 침투 — 2장
2장 각종 설정 작업
INDEX
- root 계정 설정
- 업데이트
- 네트워크 설정 (IP, DNS)
- 한글 키보드 설정
- SSH 설정
- 웹페이지, 서버 설정
- 삼바서버 설정
- sysv-rc-conf 설정
1장 실습 환경 구축을 위한 여러 설치에 이어서, 2장에서는 각종 설정 작업을 수행할 것이다.
대부분의 실습은 터미널 창을 이용하여서 진행할 것이다.
1.root 계정 설정
lsb_release는 리눅스 버전을 확인하는 명령어이다.
-a는 모든 정보를 표시하는 옵션(플래그)이다.
lsb_release -a 명령어를 입력하면 백박스 운영 체계의 코드네임 정보를 볼 수 있다.
우분투 계열에서는 기본적으로 root 계정이 비활성 상태이다. 따라서 주분투(우분투를 기반으로 xfce 데스크톱 환경이 적용된 리눅스 배포판)에 기반을 둔 백박스에서도 root 계정이 비활성 상태로 있다. 그렇기 때문에 root 계정을 활성 상태로 전환하여야 한다.
root 계정을 활성 상태로 전환 할 경우 다음과 같이 작업하면 된다.
sudo passwd root는 root 계정의 비밀번호를 설정할 수 있는 명령어이다.
sudo passwd root를 입력한 후, 첫번째에 설치 시 설정하였던 사용자 계정 암호를 입력하고, 그 다음 새 UNIX 암호에는 설정하기 원하는 root 계정 암호를 입력한다.
설정 후, su -명령어를 입력하면 일반 사용자 계정에서 루트 계정으로 전환할 수 있다.
본 실습은 서버 운영이 아닌 모의 침투가 목적이기 때문에 이후의 모든 설명은 root 계정을 전제로 한다.
2.업데이트
저장소에 접속해 일련의 업데이트 작업을 진행할 것이다.
apt-get clean 명령어는 이전에 작업했던 내용(다운로드한 압축 파일)이 남았으면 깨끗하게 지우겠다는 의미이다.
보통 /var/cache/apt/archives에 .deb 패키지 파일로 저장되어있다.
apt-get clean 명령어를 이용하여 과거에 설치한 패키지(deb) 파일을 삭제한다.
apt-get update는 업데이트 할 최신 프로그램이 있는지 확인하는 명령어이다. upgrade하기 전에 /etc/apt/source.list를 갱신해준다.
apt-get update를 통해 패키지 소스 리스트를 갱신한다.
apt-get upgrade는사용 중인 프로그램(설치된 패키지)을(를) 최신 버전으로 업데이트해준다.
3.네트워크 설정(IP, DNS)
이제 TCP/IP 부분을 설정할 것이다.
ifconfig 명령어를 입력하면 IP 주소를 확인할 수 있다.
현재 IP 주소는 192.168.10.130이다.
하지만 현재 IP 주소는 가상머신에서 할당한 유동 IP 주소이다. 이는 VM이 DHCP(Dynamic Host Configuration Protocol) 서버 역할을 수행하면서 게스트 OS에게 IP를 할당한 결과이다.
실습을 진행하기 위해서는 고정 IP 주소로 바꿔야 한다.
cd는 다른디렉토리로 이동할 때 사용하는 명령어이다.
cat은 파일의 내용을 출력해주는 명령어이다.
cd 명령어를 이용해서 /etc/network 위치로 이동한다. [그림2–7]은 cat 명령어를 이용하여 interfaces 파일의 구성 내용을 출력한 결과이다.
‘auto lo’는 Loopback Interface를 자동으로 lo(Loopback Interface, 라우터에서 가상의 인터페이스를 생성하는 것을 의미)에 인지시키게 하는 명령을 내리는 스크립트이다. 그 다음의 ‘iface lo inet loopback’은 Inter-network 기반의 Loopback임을 말한다.
이전에 설정하였던 vmnetcfg.exe 실행 파일을 열어 DHCP Settings를 누르고 Starting IP Address 부분에 서버 고정 IP 주소를 입력한다. 실습에서는 고정 IP 주소를 192.168.10.219로 설정할 것이다.
여기까지, 고정 IP 설정이 끝났다. 다음으로 DNS 서버 IP 주소 설정할 것이다.
윗 부분(고정 IP 설정)도 책과 상이해서 상당히 속을 썩였지만, 이 부분(DNS 서버 IP 주소 설정)도 만만치 않게 속을 썩였다. 재부팅만 하면 DNS가 초기화 되었기 때문이다. 책의 부록 B가 이 현상에 도움이 된다고 하였지만, 버전이 달랐기 때문인지, 전혀 도움이 되지 않았고 결국 구글링을 통해서 문제를 해결할 수 있었다. 한 번에 잘 안 될수도 있다는 사실을 감안하고 실습을 진행해주기 바란다.
[그림2–9]는 cat을 이용해서 /etc/resolv.conf 의 현재 nameserver(DNS서버)를 확인한 모습이다.
apt-get install 명령어는 패키지를 설치할 때 사용된다.
-a는 숨김파일(.으로 시작)을 포함한 모든 항목을 표시하는 옵션이다.
-l은 각 파일의 모드, 링크 수, 소유자, 그룹, 크기(바이트), 최종 수정 시간을 표시하는 옵션이다.
재부팅시 DNS 부분이 초기화 되는 문제를 막기 위하여 resolvconf 패키지를 설치해준다. /etc/resolvconf/로 이동하여 디렉토리의 항목을 확인하고, apt-get-install로 resolvconf를 설치한다. -y 옵션을 통해 설치에 모두 동의해준다.
nano편집기 혹은 vi편집기로 /etc/resolv.conf를 열어서 nameserver 192.168.10.201과 8.8.8.8(구글 ip 주소)을 추가한다.
필자는 [그림2–11]처럼 vi 편집기를 이용하여 nameserver를 추가해주었다.
vi 편집기를 이용할 경우, 글을 수정하기 위해서는 i를 눌러서 끼워넣기로 바꿔줘야한다. 이후 저장하고 나올 때, esc를 누른 후 shit+Z를 두번 누르면 된다.
지금까지 설정한 내용을 최종 적용하기 위해서 백박스 운영체제를 재시작한다.
sync는 램에 있는 내용을 하드 디스크로 옮기라는 의미다. 운영 체제를 재시작하거나 종료할 경우 반드시 sync 명령어를 입럭하는걸 권장한다.
reboot는 운영체제를재시작할 때 사용되는 명령어이다.
sync 명령어를 세 번 정도 반복한 후, [그림2–14]처럼 reboot를 이용하여 운영 체제를 재시작해준다.
그런 후, [그림2–9]의 과정을 반복할 경우 [그림2–15]처럼 nameserver가 입력한대로 변해있는 것을 확인할 수 있다.
4.한글 키보드 설정
한글 키보드 설정을 위하여 im-config를 입력해준다. [그림2–16]와 같이 화면이 뜨면 확인을 눌러주고, [그림2–17]의 화면에서 hangul을 누른 후 확인을 눌러준다.
설정 적용을 위하여 [그림2–13,14]의 과정을 다시 거친다.
Ctrl+Space를 누르면 한/영이 바뀐다는 것을 알 수 있다.
[그림2–20]은 한글로 바꾼 후, 터미널에서 한글을 입력한 모습이다.
5.SSH 설정
칼리리눅스에서는 설치 직후 SSH(Secure Shell) 서비스를 별도로 설치해야 하지만, 백박스에서는 SSH 서비스가 기본적으로 동작 중이다.
여기서, SSH란?
Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜이다.
백박스 가상환경경에서 실습하는 경우라면 Tera Term 이나 Putty 등과 같은 원격 접속 프로그램을 이용해 곧바로 원격에 접속할 수 있다.
VM 로컬 상태보다는 원격 접속 상태에서 작업하는 것이 수월하기에 앞으로 모든 실습은 원격 접속 상태를 전제로 한다.
많은 가상머신을 설치했다 삭제했다가를 반복하다보니, [그림2–21]처럼 화면이 종종 이상하게 나오기도 하였다. 다른 문제가 있는 것은 아니니 큰 신경쓰지 않고 실습을 진행해도 좋다.
cat /etc/ssh/sshd_config -n | egrep “PermitRootLogin”을 입력하면, /sshd_config 파일에 “PermitRootLogin”이 들어있는 부분을 찾아서 문장의 위치와 내용을 출력해준다.
PermitRootLogin부분을 yes로 바꿔줄 것이다.
(prohibit-password가 보안적으로 더 좋지만, 침투 실험을 위하여 yes로 바꿔줄 것이다.)
[그림2–23]처럼 prohibit-password를 yes로 바꿔주고 주석처리 하지 않기 위해서, 앞에 #를 지운다.
그 후 [그림2–21]의 명령어를 다시 입력하면 PermitRootLogin이 yes로 바뀐 것을 확인할 수 있다.
여기까지 설정한 후, 백박스 운영체제를 재시작하면 루트 계정을 이용한 SSH 접속이 가능해진다.
6.웹페이지, 서버 설정
cp는 첫번째에 적힌 파일(앞)을 두 번째에 적힌 위치(뒤)로 복사하는 명령어이다.
cat >는 출력이 아닌 기존에 있는 파일 내용을 지우고 저장하겠다는 의미로 파일을 입력하면 기존의 파일 내용은 지워지고 입력한 내용이 새롭게 덮어씌워진다.
cp 명령어를 사용하여 [그림2–25]의 기본 웹페이지(/var/www/html/index.html /root/)를 /root/에 복사하여 사본을 준비하고, cat > 명령어를 이용하여 기본 웹 페이지 내용을 삭제한다. ^C는 Ctrl+C를 동시에 눌렀다는 의미이다.
cat 명령어를 이용하여 기본 웹 페이지 내용을 출력하면 아무런 내용도 적혀있지 않음을 확인할 수 있다.
cat > 명령어를 이용하여, /var/www/html/index.html에 [그림2–26]의 내용을 입력한다. [그림2–26]의 작성 내용은 HTML5 문법에 따른 작성이다.
본문 내용 중 [그림2–27]의 <script src=”http://192.168.10.219:3000/hook.js”></script>부분은 8장 BeFF 도구를 이용할 때 반드시 필요한 내용이기 때문에 특히 중요하다.
다음으로 기본 웹 페이지 경로를 확인한다.
[그림2–28]에서 보이는 것처럼 기본 웹 페이지 경로가 /var/www/html과 같이 나타난다.
다음으로는 아파치 구성 파일에서 기본 웹 페이지 경로를 확인한다.
기본 웹 페이지 경로가 /var/www/와 같이 나타난다.
[그림2–29]와 [그림2–30]의 경로가 다르다는 것을 알 수 있는데, 기본 웹 페이지 경로가 모두 /var/www/html과 같이 나와야만 이후의 실습이 원할해 진다.
그렇기 때문에 [그림2–29]의 경로를 nano 편집기를 이용해 /var/www/html로 변경해야한다.
7.삼바서버 설정
다음으로 삼바(Samba) 서비스를 구축한다.
여기서, 삼바(Samba)란?
SMB(Server Message Block)프로토콜을 통해 지역 네트워크(LAN) 환경에서 UNIX-like 서버와 윈도우 클라이언트 간에 파일이나 프린터간의 공유를 가능하게 해주는 패키지를 말한다.
삼바 프로그램을 설치한다.
[그림2–32]처럼 설치했다면 /tmp/ 디렉터리를 삼바 공유 공간으로 지정해 [그림2–33]와 같이 작성한다.
다음으로, 삼바 서버 동작 여부를 확인해볼 것이다.
백박스 운영체제에서 모의 침투를 수행할 때 방화벽은 종종 걸림돌로 작용할 수 있기에 가급적 방화벽 설정은 초기화 상태를 유지하는 편이 바람직하다.
iptables -F && iptables -L 명령어는 백박스에서 기본적으로 동작하는 IPTables라는 소프트웨어 방화벽 설정을 모두 초기화하겠다는 의미다.
netstat -tanp | grep smbd 명령어를 통해 볼 수 있는 바와 같이 TCP 139/455번 포트 번호가 대기 상태임을 알 수 있다. 이는 삼바 서비스가 성공적으로 동작 중임을 의미한다.
8.sysv-rc-conf 설정
네트워크 설정 다음으로 필자(들)의 골머리를 썩혔던 부분이다. 아래 방법이 되지 않는다면, 안타깝게도(?)구글링을 통해 맞는 방법을 찾아보기 바랍니다.
sysv-rc-conf는 부팅시에 특정 서비스를 자동으로 시작되도록 등록하고 싶은 경우 사용하는 프로그램이다.
책이나 검색을 하면 sysv-rc-conf를 설치하는 방법이 굉장히 간단하다.
apt-get install sysv-rc-conf
위 방법이 되지 않는다면 밑에 방법을 따라해보면 되는데 만약에 이 마저 되지 않는다면…. ……..화이팅!
(패키지를 찾을 수 없다거나, 설치 할 수 없는 등 위 방법을 사용하여 에러가 발생하면 아래 방법을 한 번 시도해보세요.)
nano편집기나 vi 편집기를 이용하여, /etc/apt/sources.list(패키지 다운로드 서버)에 들어가서 [그림2–37]처럼 마지막에 deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse를 추가해준다.
그 다음, [그림2–4]처럼 update를 진행해준다.
aptitude는 apt 처럼 패키지 관리를 돕는 일종의 툴(tool)이다. 이용 방법은 apt와 유사하다.
apt를 이용했을 때 설치가 안 되면 aptitude 혹은 dpkg를 이용하는 것도 한 방법이다.
[그림2–38], [그림2–39],[그림2–40]의 과정을 무사히 거치면 sysv-rc-conf 프로그램 설치가 무사히 된 것이다!
sysv-rc-conf를 입력하면 프로그램이 실행된다.
[그림2–42]는 프로그램을 실행한 화면이다.
종료를 원하는 경우 q를 누르면 된다.
설정을 다 마친 후에, 백박스 운영체제를 재시작해준다.
([그림2–13,14]의 방법을 꼭 사용하길 바란다!)
nmap 네트워크 포트를 스캔하는 툴이다.
nmap [IP, 도메인주소]를 입력하면 된다.
[그림2–35]에서 삼바서버에 해당하는 TCP 139/445번이 대기 중임을 확인하였다. [그림2–43]에서 해당 포트 번호가 제대로 동작하고 있는 걸 보아, 삼바 서비스가 정상적으로 동작 중임을 알 수 있다.
마치며
저번 장에 이어서 실습 환경 구축을 위해 각종 설정 작업을 진행해보았습니다. 처음 계획과 달리 1,2장의 설정 작업이 책에 나온대로 쉽게 진행되지 않아서 약 2주간 참 많은 구글링을 하였고, 가상머신의 삭제와 생성을 많이 반복하였습니다 ㅇㅅㅜ
많은 시간과 땀이 배어있는(?) 이 글이 실습을 진행하는 분들께 도움이 되었으면 좋겠습니다.
다음 시간에는 “리눅스 배포판”에 대해 포스팅 할 것입니다.
[WARNING]
공부한 내용을 정리하는 글이라서 틀린 내용이 있을 수도 있습니다. 잘못된 내용이 있다면 망설이지 마시고 알려주세요!
읽어주셔서 감사합니다 :)
참조
고정 IP설정과 sysv.rc.conf 설치시 참조했던 글들입니다!