
온라인 웹 애플리케이션 대상 사전/스프레이 공격을 위한 고도로 설정 가능한 스크립트.
Klyda 프로젝트는 온라인 웹 애플리케이션에 대한 빠른 자격 증명 기반 공격을 돕기 위해 만들어졌습니다.
Klyda는 간단한 비밀번호 스프레이부터 대규모 멀티스레드 사전 공격까지 지원합니다.
Klyda는 새로운 프로젝트이며, 기여를 찾고 있습니다. 어떤 도움이라도 매우 감사합니다.
Klyda는 간단하고 기억하기 쉬운 사용법을 제공하지만, 필요에 따라 구성도 가능합니다:
1) Git 저장소를 로컬 머신에 클론합니다. git clone https://github.com/Xeonrx/Klyda
2) Klyda 디렉토리로 이동합니다. cd Klyda
3) Pip을 통해 필요한 모듈을 설치합니다. pip install requests beautifulsoup4 colorama numpy
4) 사용법을 보려면 Klyda 도움말 프롬프트를 표시합니다. python3 klyda.py -h
Klyda는 주로 Linux용으로 설계되었지만, Python을 실행할 수 있는 모든 머신에서 작동해야 합니다.
Klyda가 작동하기 위해 필요한 것은 URL, 사용자명, 비밀번호, formdata라는 네 가지 간단한 의존성뿐입니다.
--url 태그를 사용하여 URL을 지정할 수 있습니다. 예: --url http://127.0.0.1
절대 적절한 권한이 없는 웹페이지에 공격을 시작하지 마십시오.
사용자명은 이러한 사전 공격의 주요 대상입니다. 여러 사용자명, 특정 몇 개, 또는 단 하나일 수 있습니다. 이는 스크립트를 사용할 때 전적으로 귀하의 결정입니다. 다음과 같은 방법으로 사용자명을 지정할 수 있습니다.
1) 수동으로 지정: -u Admin User123 Guest
2) 파일을 사용하거나 여러 파일을 결합: -U users.txt extra.txt
3) 파일과 수동 입력을 모두 사용: -U users.txt -u Johnson924
비밀번호는 이러한 공격에서 어려운 부분입니다. 비밀번호를 모르기 때문에 사전 및 무차별 대입 공격이 존재합니다. 사용자명과 마찬가지로, 하나의 비밀번호에서 원하는 만큼 많은 비밀번호를 제공할 수 있습니다. 다음과 같은 방법으로 비밀번호를 지정할 수 있습니다.
1) 수동으로 지정: -p password 1234 letmein
2) 파일을 사용하거나 여러 파일을 결합: -P passwords.txt extra.txt
3) 파일과 수동 입력을 모두 사용: -P passwords.txt -p redklyda24
FormData는 요청을 구성하는 방법으로, 대상 웹사이트가 이를 받아들여 제공된 정보를 처리할 수 있게 합니다. 일반적으로 사용자명 값, 비밀번호 값, 그리고 때로는 추가 값을 지정해야 합니다. 브라우저의 검사 요소에서 네트워크 탭을 확인하여 대상이 사용하는 FormData를 볼 수 있습니다. Klyda에서는 -d 태그를 사용합니다.
Klyda가 요청을 보낼 때 사용자명과 비밀번호를 주입할 위치를 알 수 있도록 플레이스홀더를 사용해야 합니다. 다음과 같이 보일 수 있습니다...
-d username:xuser password:xpass Login:Login
xuser는 사용자명을 주입하는 플레이스홀더이고, xpass는 비밀번호를 주입하는 플레이스홀더입니다. 이것을 반드시 알아야 합니다. 그렇지 않으면 Klyda가 작동하지 않습니다.
FormData는 (키):(값) 형식으로 지정합니다.
Klyda가 성공적인 공격인지 알기 위해서는 검토할 데이터를 제공해야 합니다. Klyda는 실패한 로그인 시도에서 제공된 블랙리스트를 사용하여 실패한 요청과 성공한 요청을 구분합니다. 세 가지 유형의 데이터를 블랙리스트에 추가할 수 있습니다...
1) 문자열: --bstr "Login failed"
2) 상태 코드: --bcde 404
3) 콘텐츠 길이: --blen 11
각 블랙리스트에 대해 필요한 만큼 많은 데이터를 지정할 수 있습니다. 응답에서 제공된 데이터 중 어떤 것도 발견되지 않으면 Klyda는 이를 "성공"으로 표시하여 성공적인 로그인 시도라고 간주합니다. 반대로 블랙리스트의 데이터가 발견되면 Klyda는 실패한 로그인 시도로 표시합니다. Klyda가 평가할 데이터를 제공하므로, 거짓 양성(false positive)은 발생하지 않습니다.
블랙리스트에 데이터를 전혀 제공하지 않으면 모든 요청이 Klyda에 의해 성공으로 표시됩니다!
기본적으로 Klyda는 단일 스레드로 실행됩니다. 그러나 -t 태그를 사용하여 더 많은 스레드를 지정할 수 있습니다. 이는 작업 속도를 높이는 데 도움이 될 수 있습니다.
그러나 자격 증명 공격은 네트워크에서 매우 시끄러울 수 있으며, 따라서 쉽게 감지됩니다. 대상 계정은 너무 많은 로그인 시도로 인해 간단히 잠길 수 있습니다. 이로 인해 DoS 공격이 발생하지만, Klyda의 목표인 사용자 자격 증명을 획득하지 못하게 됩니다.
따라서 이러한 공격을 조금 덜 시끄럽게 만들기 위해 --rate 태그를 사용할 수 있습니다. 이를 통해 분당 특정 요청 수로 스레드를 제한할 수 있습니다.
형식은 다음과 같습니다: --rate (요청 수) (분)
예를 들어, --rate 5 1은 각 분마다 5개의 요청만 보냅니다. 이는 각 스레드에 대한 것임을 기억하십시오. 2개의 스레드가 있으면 분당 10개의 요청을 보내게 됩니다.
Damn Vulnerable Web App (DVWA) 또는 Mutillidae에서 Klyda를 테스트해보십시오.
python3 klyda.py --url http://127.0.0.1/dvwa/login.php -u user guest admin -p 1234 password admin -d username:xuser password:xpass Login:Login --bstr "Login failed"
python3 klyda.py --url http://127.0.0.1/mutillidae/index.php?page=login.php -u root -P passwords.txt -d username:xuser password:xpass login-php-submit-button:Login --bstr "Authentication Error"
앞서 언급했듯이 Klyda는 아직 진행 중인 프로젝트입니다. 향후에는 더 많은 기능을 추가하고 코드를 더 깔끔하게 리포맷할 계획입니다.
최우선 순위는 프록시 기능을 추가하는 것이며, 현재 작업 중입니다.