반응형

John the Ripper

 

1996년에 처음 공개된

존더리퍼(John the Ripper, JtR)

본래 유닉스 기반 시스템을 위해 개발된 비밀번호 크래킹 도구입니다.

사전 공격(Dictionary Attack)을 통해 비밀번호 강도를 테스트하고

암호화된(해시된) 비밀번호를 무차별 대입(brute-force) 공격하여 비밀번호를 크래킹 하기 위해 고안됐습니다.

비밀번호 크래킹 속도를 높이기 위한 다양한 모드 제공하고,

암호화된 비밀번호가 사용하는 해싱 알고리즘 자동 탐지,

손쉬운 도구 구동 및 구성 등이 포함되어 있어 초보자와 전문가 모두 연습이 가능한 비밀번호 크래킹 도구입니다.
하지만 JtR은 악의적인 해킹 목적보다는 보안 전문가들이 시스템의 약점을 찾고 강화하는 데 사용하는 교육 도구로 더 널리 인식됩니다.

보안 연습을 위한 실습 도구로서 그 가치가 높히 평가됩니다.


설치

 

아래 코드를 이용하여 깃에 접속해 존더리퍼를 손쉽게 설치할 수 있으며,

git clone "https://github.com/magnumripper/JohnTheRipper.git" && cd JohnTheRipper/src && ./configure && sudo make -s clean && sudo make -sj4

 

아래 코드를 이용하여 Zip 파일을 풀고 비밀번호 해제를 진행합니다.

cd JohnTheRipper/run ./zip2john [filename.zip] > hash.txt ./john hash.txt

 

아래 사이트에서는 직접 자신에게 맞는

OS 별 환경에 맞게 다운로드하고 설정할 수 있습니다.

https://www.openwall.com/john/

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com


일반적으로 비밀번호 크래커와 같은 도구는

3가지 방식으로 동작합니다.

 

사전 공격 (Dictionary Attack)

무차별 대입 (brute-force)

레인보우 테이블 (Rainbow tables)

 

전수 지수 공격 무작위 대입 공격이며

(모든 문자 및 숫자를 대입하는 방식)

사전 대입 공격은 관련성 있는 문자 및 숫자를 먼저 대입하는 방식입니다


사전 공격

사전 공격 사전에 입력된 수많은 단어와 구문,

이전에 유출된 데이터에서 가능성 있는 비밀번호 목록으로 로그인을 시도합니다.

이 도구는 올바른 비밀번호를 찾기 위해 애플리케이션 목록의 모든 단어를 입력합니다.
일반적으로 간단한 비밀번호에 효과적이지만,

복잡하고 무작위적인 비밀번호에는 덜 효과적입니다.

이 방법은 보안 수준이 낮은 시스템을 빠르게 크래킹 하는 데 유용하지만,

강력한 비밀번호에 대해서는 시간이 오래 걸릴 수 있습니다.


무차별 대입 공격

무차별 대입 공격은 사용자에게 아래와 같이 몇 가지 규칙을 구성하도록 요청합니다.

올바른 비밀번호의 최소 길이와 최대 길이,

구성될 가능성이 있는 글자 유형

(문자, 문자+숫자, 특수 문자 등)

위치 (알파벳 몇 개, 특수 문자 몇 개, 비밀번호 총 길이 등의 규칙)

이상적인 대입 구성을 찾기 위해서는 약간의 추측과 전문 지식이 필요합니다.

그리고 범위 안에서 기준에 따라 가능한 모든 비밀번호 조합을 추측하고,

올바른 비밀번호를 찾아내면 사용자에게 알려주도록 고안되어 있습니다.

이 방법은 매우 효과적인 방법이지만 속도가 매우 느립니다.

예를 들어, 대소문자와 함께 숫자와 특수 문자가 혼합된 9자리 비밀번호는

컴퓨터가 추측하는 데 9년 이상이 소요되기 때문에 실제로는 크래킹이 불가능합니다.

그래서 보안 전문가들이 항상 다양한 문자 유형의 조합으로 구성된 길고 복잡한 비밀번호를 선택하라고 제안하는 것이죠


레인보우 테이블(Rainbow tables)

 

업무에 필수적이고 보안 지향적인 애플리케이션은

비밀번호를 평문으로 저장하는 경우가 거의 없고 길이가 고정된 해시를 저장하고 있습니다.

때문에 유출된 데이터 등으로부터 얻은 해시화된 비밀번호 목록의 경우에 레인보우 테이블이 더욱 효율적일 수 있습니다.

우선 사전에 연산된 비밀번호 해시 목록을 기존의 데이터와 비교해 평문 형식의 올바른 비밀번호를 찾습니다.

해시된 데이터가 미리 계산되기 때문에 레인보우 테이블을 사용하는 것이

무차별 대입보다 속도 적으로 훨씬 빠릅니다.

레인보우 테이블은 비밀번호 해시가 솔팅(Salting) 되어 있고 솔트 값이 너무 커서

비밀번호의 전체적인 복잡성이 증가할 때는 효과적이지 못합니다.

그래서 해시된 사용자 비밀번호를 데이터베이스에 저장하는 것 외에

솔팅을 보안 방어책으로 사용하는 것입니다.

솔팅을 제대로 적용하면 비밀번호 데이터베이스가 유출되더라도

실제로 해커가 사용자 비밀번호를 본래의 평문 형식으로 되돌리는 것이 불가능하기 때문입니다.

솔팅과 해시 평문 등 어려운 단어로 알아듣지

못하시더라도 지금은 괜찮습니다.

추후 제가 설명 글을 작성해 드리도록 하겠습니다.

해당 방법은 보안을 위한 연습만 하시길 바라며

악의적인 해킹은 절대 삼가 주시기 바랍니다.


궁금하신 사항은 댓글에 남겨주세요
댓글에 남겨주신 내용은
추후 정리해서 올려드리겠습니다
이웃 신청하시면 업로드 시 알려드릴게요!
-
조금이라도 도움이 되셨다면
공감&댓글 부탁드리겠습니다
감사합니다!

반응형
반응형

 

오늘은 해킹 기법 중 하나인 SQL Injection에 대해 알아보겠습니다.

시작하기에 앞서 아직 SQL이 무엇인지,

Query (쿼리)가 무엇인지 모르신다면

아래 글을 먼저 읽고 와주시길 바랍니다.

(작성 중)


SQL Injection?

 

SQL은 DB에서 사용하는 프로그래밍 언어이며

Injection 이란 무언가를 주입/주사할 때사용하는 단어로써

SQL Injection은 프로그래밍 언어를 주입하는 해킹 기법입니다.

해커는 보안상의 취약점을 이용하여 대상에게 임의의 SQL 문을 주입하여 실행되게 하고

DB를 공격하는 기법으로 데이터 베이스가 비정상적으로 동작하게 합니다.

인젝션 공격은 OWASP Top10 중 첫 번째 속해 있으며,

공격이 비교적 쉬운 편이고 공격에 성공할 경우

큰 피해를 입힐 수 있는 위험한 공격으로

보안 위협 1순위에 속하는 공격입니다.

SQL Injection 관련 취약점이 존재하면

웹서버의 정보가 모두 털릴 수 있을 정도로

아주 치명적입니다.

2017년 3월에 일어난 “여기어때” 의 대규모 개인정보 유출 사건도 SQL Injection으로피해가 발생하였었죠.

Owasp란?

OWASP는

‘Open Web Application Security Project’의 약자로 비영리 보안 프로젝트 재단을 통칭합니다.

이곳은 SW 보안 향상을 목적으로 운영되는 국제 웹 보안 표준 기구로서

애플리케이션에서 발생할 수 있는 취약점을 분석하고 연구하고 있는데요,

웹 애플리케이션 보안의 위협이 되는 취약점을 TOP 10으로 뽑아 만들고 대비할 수 있도록 알려줍니다.


SQL 인젝션 공격 기법

(대표적인 3가지)

Error Based SQL 인젝션

인증 우회(AB:Auth Bypass)

에러 기반 SQL Injection입니다.입니다.

에러를 이용한 공격 기법으로, 고의로 SQL 문에 에러를 발생시키는 기법으로

에러 메시지를 통해 쿼리문의 구성을 추측하고 DB의 테이블명, 칼럼명, 데이터 내용까지도 알아낼 수 있습니다.

보통 Users 테이블에 있는 모든 정보를 조회하게 됨으로 써

가장 먼저 만들어진 계정으로 로그인에 성공하게 됩니다.

보통은 관리자 계정을 맨 처음 만들기 때문에

관리자 계정에 로그인하여 막대한 2차 피해가 생기는 공격입니다.


Unipon Based SQL 인젝션

데이터 노출(DD:Data Disclosure)

Union 쿼리를 사용한 공격 기법으로 2가지

쿼리를 결합해 정보를 알아낼 때 사용하는 기법으로

공격에 성공하기 위해선 쿼리 두 개의 칼럼 수와 데이터 형이 같아야 한다는 조건이 있습니다.

데이터를 입력하여 참 거짓 값을 알아내고

쿼리 분석기로 칼럼 수를 파악한 후 계정을 열람할 수 있도록 SQL Injection 구문을 작성하여 공격하고,

테이블 열람 구문을 입력하여 모든 사용자의 테이블을 열람할 수도 있습니다.


Blind SQL 인젝션

(Boolean Based SQL, Time Based SQL)

에러 메시지가 발생하지 않는 경우 주로 사용하는 기법으로

특정 쿼리문으로 인한 결과가 참/거짓인 것 만 알 수 있을 때 사용합니다.

예를 들어 어딘가에 로그인을 성공하면 참, 실패하면 거짓 같은 결과를 알 수 있을 때

임의의 SQL 구문을 삽입하여 인가되지 않은 데이터를 열람하고 공격합니다

이러한 특징 때문에 이용하여 주로 데이터 노출을 위해 사용되며,

우편번호 찾기나, 게시판과 같이 데이터를 쉽게 확인할 수 있는 곳에서도 주로 사용됩니다.

요즘은 에러 메시지를 출력하지 않게 웹서버를 구축하고 있어서 웬만한 SQL 공격은 Blind sql 공격으로 진행됩니다


자세한 해킹 방법은 가상 환경을 구축하여

모의 해킹을 통해 알려드리도록 하겠습니다.

https://jdcyber.tistory.com/7

 

버츄얼박스 (VirtualBox)와 칼리 리눅스 (Kali Linux)를 이용한 모의해킹 실습 환경 구축 가이드

오늘은 모의해킹 실습 환경을 구축하는 방법에 대해 소개하려고 합니다. 이번 글에서는 VirtualBox와 칼리 리눅스(Kali Linux)를 사용합니다. 1. VirtualBox 설치 먼저, VirtualBox를 설치해야 합니다. 우리가

jdcyber.tistory.com

Sql 인젝션을 대비하고 보안하는 방법은

아래 글을 참고해 주세요!

(작성 중)

오늘은 SQL 구문을 이용한 해킹 기법인

SQL Injection에 대해 알아봤습니다.

해당 방법은 보안을 위한 연습만 하시길 바라며

악의적인 해킹은 절대 삼가 주시기 바랍니다.


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

이웃 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형

+ Recent posts