백박스 리눅스를 활용한 모의 침투 — 8장(1)

Yu Jin Yang
Quantum Ant
Published in
7 min readOct 2, 2019

8장 BeEF 도구를 이용한 XSS 공격의 이해(1)

INDEX

  1. XSS 공격
  2. BeEF 설치(1)
  3. BeEF 설치(2) 및 구동

1.XSS 공격

XSS(Cross-Site Scripting)공격이란?

SQL 삽입 공격처럼 웹 분야를 위협하는 대표적인 공격 중 하나로 다른 사용자의 정보를 추출하는 공격 기법이다.

XSS 공격은 7장에서 보았던 SQL 삽입 공격과 마찬가지로 신뢰할 수 없는 데이터를 이용한다.

XSS 공격은 공격자가 공격대상자의 웹 브라우저에 악성 스크립트를 실행하는 방법을 이용하여 공격대상자의 각종 정보를 탈취한다.

웹 브라우저란?

HTML 코드를 해석하고 처리하는 소프트웨어라고 할 수 있다.

HTML이란?

아파치와 파이어폭스 등이 프로토콜(HTTP)을 통해 주고 받는 일종의 웹 문서이다. <head>, <body>와 같은 태그로 이루어져 있다.

취약점은 주로 HTML 코드가 <script> 태그를 허용하면서 발생한다.

자바스크립트란?

자바스크립트는 객체 기반의 스크립트 프로그래밍 언어로 웹 브라우저 안에서 동적인 기능을 구현하고자 할 때 주로 사용한다.

자바스크립트는 다른 응용 프로그램의 내장 객체에 접근할 수 있는 기능이 있다.

위 특성 때문에 만약 자바스크립트 코드가 신뢰할 수 없는 로직으로 이루어져 있고 다른 응용 프로그램의 내장 객체에 접근할 수 있다면, SQL 삽입 공격보다 더욱 치명적인 결과를 초래할 수 있다.

위 글을 종합하여 다시 이야기하자면, XSS 공격은 신뢰할 수 없는 자바스크립트 로직을 웹 브라우저에 삽입하여 수행하는 공격이라 할 수 있다.

따라서, XSS 공격을 방지하기 위해서는 입력값에 대한 검증 절차가 필요하다.

PHP 언어에서는 strip_tags()나 htmlspecialchars()함수 등을 이용해 차단할 수 있다.

strip_tags() 함수 : 문자열에서 HTML 태그와 PHP 태그 제거하는 함수

htmlspecialchars() 함수 : 특수 문자를 HTML 엔티티(“” → &quot;)로 변환

2.BeEF 설치(1)

BeEF(Browser Exploitation Framework) 도구는 웹 브라우저 기반의 침투 프레임워크로, 웹 브라우저의 취약점 침투에 최적화한 도구이다.

이제, BeEF 사용을 위해 설치를 진행할 것이다.

[그림8–1]

apt-get install beef

위 명령어를 이용하여 BeEF를 설치한다.

[그림8–2]

service apache2 start

BeEF는 웹 브라우저를 이용한 침투 도구이기때문에 시작 전에 반드시 아파치 서버를 구동해야 한다.

[그림8–3]

service apache2 status

아파치 서버가 시작했는지 알고 싶다면, 위 명령어를 이용하여 확인하면 된다.

확인을 종료하고 싶다면 Q를 누른다.

그 후, BeEF 구동을 위하여 밑의 명령어를 입력한다.

cat /opt/beef-project/config.yaml -n

위 명령어가 된다면 다음의 과정을 생략해도 좋다!

필자는 실행되지 않았기 때문에 다시 설치를 진행하였다.

어쩐지 앞의 과정이 잘 진행된다하였더니, 역시 이 부분에서 실행이 되지 않았다. 다행히도 필자는 지옥의 구글링을 거쳐 해답을 찾았다!

3.BeEF 설치(2) 및 구동

[그림8–4]

apt install ruby ruby-dev

ruby를 설치한다.

[그림8–5]

apt install git

BeEF 도구의 소스 파일을 다운받기 위하여 git을 설치한다.

[그림8–6]

git clone https://github.com/beefproject/beef

git을 이용하여 BeEF의 소스파일을 다운받는다.

[그림8–7]

cd beef

./install

beef파일에 이동하여 install파일을 실행해준다. (설치진행)

[그림8–8]

./beef

설치가 끝난 후 동일한 폴더(/beef)에서 beef 파일을 실행한다.

[그림8–9]

service apache2 start

이후 BeEF 침투도구를 사용하기 위해 위에서 진행했던 것처럼 아파치2를 시작한다.

[그림8–10]

cat config.yaml

명령어를 이용해 BeEF 구성 내역을 확인한다.

[그림8–10]의 빨간 박스(credentials 항목)를 보면 계정과 비밀번호가 각각 “beef”임을 알 수 있다.

[그림8–11]

이대로 BeEF를 구동하면 [그림8–11]과 같은 에러가 발생한다.

이는 username과 password를 변경하라는 경고이다.

[그림8–12, 13]

nano config.yaml

nano를 이용하여 username과 비밀번호를 변경한다.

[그림8–14]

다시 BeEF를 구동해서 성공하면[그림8–14]와 같은 문구가 나온다.

[그림8–15]

http://(IP주소):3000/ui/panel

backbox의 웹 브라우저를 틀고 사전 설정한 IP에 맞춰 주소를 입력한다.

필자의 경우 ifconfig로 확인했을 때, IP주소가 192.168.10.221이었기 때문에 이를 IP주소란에 넣었다.

이후, [그림8–13]에 입력했던 정보를 그대로 기입한다.

[그림8–16]

로그인을 하면 [그림8–16]과 같은 제어화면이 나타난다.

마치며

이번 시간에는 BeEF 도구를 본격적으로 사용해보기에 앞서 설치하고 설정하는 과정을 거쳤습니다. 실습까지 같이 진행하려고 하였으나, 본 실험에서 요구하는 공격대상자의 조건이 Windows7이어 바로 실습을 진행하기 힘들었습니다. 이후에는 Windows7 혹은 그 이하의 버전을 공식적으로 구하고 실험할 수 있는 방법을 더하여 BeEF 실습을 정리하여 올리겠습니다.

다음 시간에는 “BeEF 도구를 이용한 XSS 공격의 이해(2)”에 대해 글을 올릴 것입니다.

[WARNING]

공부한 내용을 정리하는 글이라서 틀린 내용이 있을 수도 있습니다. 잘못된 내용이 있다면 망설이지 마시고 알려주세요!

읽어주셔서 감사합니다 :)

[참조]

BeEF 설치를 위해 참고하였던 사이트입니다. 영문으로 작성되어 있지만, 쉽고 간단하게 설명되어있스습니다. 궁금하신 분들은 아래 글을 참조하여 실습을 진행해보는 것도 추천드립니다!

https://www.developsec.com/2018/06/22/installing-beef-on-ubuntu-18-04/

--

--