반응형
SQL 인젝션

 

SQL 인젝션은 웹 애플리케이션의 입력값을 조작하여 악의적인 SQL 구문을 삽입,

데이터베이스에 비정상적인 접근을 시도하는 공격 방법입니다.

이를 통해 공격자는 민감한 데이터 탈취, 데이터베이스 수정,

관리 권한 획득 등의 피해를 발생시킬 수 있습니다.

 

국내 은행사의 개인정보 탈취사건,

대형 어플의 개인정보 유출 등도 이에 해당합니다.

 

이번 실습에서는 SQL 인젝션을 통해 로그인 우회 및 데이터 탈취를 시도하고,

이를 방어하는 방법을 학습합니다.

1. 실습 환경 구축

SQL 인젝션을 실습하기 위해 안전한 환경을 구축하는 방법을 설명합니다.

1.1 가상 머신 설치

개념 설명

가상 머신(Virtual Machine)은 하나의 컴퓨터에서 여러 운영체제를 실행할 수 있게 해주는 소프트웨어입니다. 이를 통해 실제 시스템을 손상시키지 않고 다양한 실험을 할 수 있습니다.

설정 방법

  1. VirtualBox를 다운로드하고 설치합니다.
  2. Ubuntu ISO 이미지를 다운로드합니다.
  3. VirtualBox에서 새로운 가상 머신을 생성하고 Ubuntu를 설치합니다.

 

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

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

jdcyber.tistory.com

1.2 LAMP 스택 설치

개념 설명

LAMP 스택은 웹 서버를 구축하기 위한 필수 소프트웨어의 조합으로, Linux, Apache, MySQL, PHP로 구성됩니다.

각 구성 요소 설명 및 기능

  1. Linux: 운영체제(OS)로, LAMP 스택의 기본 플랫폼을 제공합니다.
  2. Apache: 웹 서버 소프트웨어로, 클라이언트로부터 HTTP 요청을 처리하고 응답을 보냅니다.
  3. MySQL: 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터를 저장하고 관리합니다.
  4. PHP: 서버 사이드 스크립트 언어로, 동적인 웹 페이지를 생성합니다.

설치 방법

  1. 터미널을 열고 다음 명령어를 실행합니다:
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql

1.3 DVWA 설치

개념 설명

DVWA(Damn Vulnerable Web Application)는 의도적으로 취약점을 포함하고 있어 보안 연습에 사용되는 웹 애플리케이션입니다.

설치 방법

  1. DVWA를 다운로드하고 Apache 웹 루트 디렉토리로 이동합니다:
sudo apt install git
git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa
sudo chown -R www-data:www-data /var/www/html/dvwa

    2. MySQL에서 DVWA 데이터베이스를 설정합니다:

sudo mysql -u root -p
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
exit;

    3. DVWA 설정 파일을 수정합니다:

sudo nano /var/www/html/dvwa/config/config.inc.php

설정 파일 내용:

$_DVWA = array();
$_DVWA[ 'db_server' ] = 'localhost';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'password';

    4. Apache 서버를 재시작합니다:

sudo systemctl restart apache2

2. Lord of SQL Injection 실습

2.1 사이트 소개

 

Lord of SQLInjection

 

los.rubiya.kr

 

개념 설명

Lord of SQL Injection은 다양한 SQL 인젝션 문제를 제공하여 실습할 수 있는 웹사이트입니다.

접속 방법

  1. 브라우저에서 Lord of SQL Injection에 접속합니다.
  2. 제공된 문제를 하나씩 풀어가며 SQL 인젝션을 연습합니다.

2.2 예시 문제 해결

시나리오 설명

SQL 인젝션은 사용자가 입력한 데이터를 이용해 악의적인 SQL 쿼리를 실행하는 공격 방법입니다. 이번 실습에서는 로그인 우회 공격을 시도합니다.

 

로그인 폼에 ' OR '1'='1을 입력하여 SQL 인젝션 시도

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

모든 사용자 계정에 접근할 수 있습니다.


3. SQL 인젝션 방어 방법

3.1 입력값 검증

개념 설명

사용자 입력값을 철저히 검증하여 악의적인 데이터를 걸러냅니다.

방어 방법

숫자 입력 필드에는 숫자만 입력되도록 검증합니다:

if (!is_numeric($_POST['id'])) {
    die("Invalid ID");
}

3.2 Prepared Statements 사용

개념 설명

SQL 인젝션 공격을 방어하는 가장 효과적인 방법 중 하나는 'Prepared Statements'를 사용하는 것입니다. Prepared Statements는 SQL 쿼리를 안전하게 실행할 수 있게 해주며, 사용자 입력을 쿼리의 일부로 직접 삽입하지 않고 별도로 처리합니다.

Prepared Statements의 작동 원리

  • 쿼리 분리: 사용자의 입력을 쿼리 구조에서 분리합니다. 이렇게 하면 입력값이 쿼리의 구조를 변경할 수 없으므로, 악의적인 쿼리 실행이 방지됩니다.
  • 파라미터 바인딩: 사용자 입력을 쿼리에 파라미터로 전달합니다. 이 파라미터는 데이터베이스에 의해 안전하게 처리되어 쿼리에 포함됩니다.

방어 방법

PHP에서 Prepared Statements를 사용하는 예시:

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

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

댓글에 남겨주신 내용

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

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

-

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

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

감사합니다!

반응형
반응형

 

스니핑(Sniffing)

스니핑(Sniffing)은 네트워크 상의 데이터 흐름을 감시하고 분석하는 행위로,

해커가 비밀번호, 신용카드 정보, 개인 데이터 등을 불법적으로 취득할 수 있는 해킹 기법 중 하나입니다.

이 기술은 일상생활에서의 데이터 보안에 중대한 영향을 미칠 수 있으므로,

모든 인터넷 사용자가 기본적으로 알아야 할 필수적인 지식입니다.

사전적으로 '스니핑'은 '코를 킁킁거리다'

또는 '냄새를 맡다'와 같은 뜻을 가지고 있습니다.

이처럼 탐지견이 마약을 찾아내듯,

컴퓨터 네트워크에서 스니핑은 통신 중인 데이터 패킷에서 몰래 정보를 추출하는 과정입니다.

쉽게 설명하면,

우체국에서는 많은 편지와 소포가 들어오고 각각의 주소로 분류되어 발송됩니다.

편지들이 네트워크에서의 데이터 패킷에 해당하며,

편지에는 발신자와 수신자의 주소가 적혀 있습니다.

스니핑을 하는 해커는 우체국에서 일하는 직원처럼 모든 편지를 있으며,

특정 편지를 몰래 열어보고 안의 정보를 읽는 것입니다.

, 통신하는 데이터 패킷에서 정보를 몰래 추출하는 과정이죠.

 

패킷이 무엇인지 궁금하시다면 아래 글을 읽어주세요!

https://jdcyber.tistory.com/12

 

패킷(Packet)이란? (쉬운 설명, 구조, 헤더, 인캡슐레이션, 핑, Ping)

패킷 (Packet) 이란 무엇일까요? 패킷은 패키지(package)와 덩어리를 뜻하는 버킷(bucket)의 합성어로 통신망을 통해 전송하기 쉽도록 데이터를 잘게 나눈 전송 단위입니다. 본래 패킷은 소포를 뜻하는

jdcyber.tistory.com

원리

네트워크에서 데이터는 '패킷'이라는 단위로 전송됩니다.

각 패킷은 송신자와 수신자의 정보, 즉 IP 주소와 물리적 주소인 MAC 주소를 포함합니다.

스니핑 공격자는 이 패킷들을 가로채 정보를 읽어내려고 합니다.

이를 가능하게 하는 대표적인 방법 중 하나가 ARP(Address Resolution Protocol) 스푸핑입니다.

ARP 스푸핑을 통해 공격자는 네트워크 상에서 자신을 다른 장치로 가장하여 데이터를 중간에서 가로챌 수 있습니다.

 

iP주소와 Mac주소에 대해 모르신다면 아래 글을 읽어주세요!

https://jdcyber.tistory.com/27

https://jdcyber.tistory.com/26

 

iP 주소란 무엇일까? (쉬운 설명, 개념, 정의, 호스트 아이디, 네트워크 아이디, 서브넷 마스크)

iP 주소란 무엇인가요? 정답은 컴퓨터마다 가지고 있는 주소 즉 이름입니다. 192.168.123.132 위와 같은 형태의 아이피 주소를 많이 보셨을겁니다. 위와 같이 A컴퓨터 너의 이름은 오늘부터 192.168.123.1

jdcyber.tistory.com

 

MAC 주소? iP 주소? 무슨 차이지? (쉬운 설명, 개념, 정의)

Mac 주소? IP 주소? iP 주소, MAC 주소.. 저희가 IT 업계로 들어오거나 인터넷 통신 혹은 게임을 할 때에도 간간히 들어봤던 이름일 겁니다. 여러분은 무엇인지 둘의 차이는 무엇인지 알고 계신가요?

jdcyber.tistory.com

스푸핑, ARP에 대해 모르신다면 아래 글을 읽어주세요!

https://jdcyber.tistory.com/61

 

스푸핑(Spoofing) 기초: 해커가 사용하는 다양한 공격 방식 이해하기

현재 디지털 시대에서 우리는 끊임없이 새로운 기술의 혜택을 받고 있지만, 동시에 우리의 데이터는 해커들의 스푸핑 공격 같은 위협에 직면해 있습니다. 예를 들어, 최근 한 글로벌 기업은 이

jdcyber.tistory.com

우리는 이미 영화에서 스니핑 공격을 본 적이 있습니다.

영화에서는 전화를 도청하고 민감한 정보를

수집하여 범죄에 사용하는데,

이는 가장 단순한 형태의 스니퍼 공격입니다.

스니핑을 사용하면 인터넷을 통해 공유하는

모든 데이터 중 암호화되지 않은 것들은

해킹당하고 위험해질 수 있습니다.

예를 들어 여러분이 인터넷에서 결재를 하게 되면

모든 카드 정보와 비밀번호가 해커에게 제공되며

해커는 이를 이용하여

당신의 돈을 모조리 훔칠 수 있겠죠

해킹을 배우는 목적은 보다 안전한 보안을 위하여 공부하는 것입니다.

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

댓글에 남겨주신 내용

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

구독 신청하시면 업로드 시 알려드릴게요!

-

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

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

감사합니다!

반응형
반응형

 

 

현재 디지털 시대에서 우리는 끊임없이 새로운 기술의 혜택을 받고 있지만,

동시에 우리의 데이터는 해커들의 스푸핑 공격 같은 위협에 직면해 있습니다.

예를 들어,

최근 한 글로벌 기업은 이메일 스푸핑 공격을 받아

중요한 금융 정보가 유출되는 사건이 발생했습니다.

이처럼,

해커들은 정교한 스푸핑 기법을 사용하여 기업은 물론 개인의 정보까지도 위험에 빠트릴 수 있습니다.

이 글에서는 스푸핑 공격이 어떻게 우리의 디지털 생활을 위협하는지,

그리고 우리가 이러한 위협으로부터 어떻게 스스로를 보호할 수 있는지에 대해 탐구하겠습니다.

우리의 정보 보안을 강화하고,

디지털 세계에서 안전을 유지하는 것은 이제 선택이 아닌 필수가 되었습니다.

 

스푸핑이란, 간단히 말해,

사람들을 속여서 그들의 데이터나 네트워크 접근 권한을 획득하는 해킹 기법입니다.

이 글을 통해, 스푸핑이 정확히 무엇인지,

우리가 이러한 위협에 어떻게 대응할 수 있는지에 대해 알아보겠습니다.

이는 오직 정보를 보호하고 디지털 세계에서

자신과 소중한 이들을 안전하게 지키는 첫걸음이 될 것입니다.


스푸핑 (Spoofing)

스푸핑은 사전적 의미로

누군가의 것을 훔치거나 모방하다

또는 속이다는 의미를 가지고 있습니다.

스푸핑은 특정한 상대를 공격하기 위한 공격 해킹 방식으로서

종류에 따라서

IP 스푸핑, ARP 스푸핑, DNS 스푸핑, 이메일 스푸핑 등 이 있습니다.

디지털 세계에서의 보안은 더 이상 선택이 아닌 필수가 되었습니다.

우리의 개인 정보, 금융 데이터, 심지어 일상의 통신까지도

온라인 공간에서 끊임없이 위협받고 있습니다.

스푸핑 공격은 이러한 위협 중 하나로,

해커들이 우리의 신뢰를 악용하여 정보를 훔치는 방법입니다.

이 글에서는 스푸핑이 무엇인지,

그리고 우리가 어떻게 스스로를 보호할 수 있는지 알아보겠습니다.


iP 스푸핑

IP 스푸핑은 해커가 다른 사람의 IP를 모방하거나

속여서 특정 대상을 공격하는 기법으로

주로 디도스 공격 (DDoS 공격)과 같이

흔히 사용이 되는 기법 중 하나입니다.

IP의 패킷 구성 요소 헤더에 있는

사용자의 정보를 조작하여

악의적으로 주인인 척 해당 IP를 사용하는 것

IP 스푸핑입니다.

 

예를 들어 마치 집 주소를 위조하여 다른 사람의 택배를 자신의 집으로 보내는 것과 비슷합니다.
해커는 인터넷 상에서 자신의 IP 주소를 다른 사람의 것처럼 위장하여,
원래의 수신자 대신 자신이 데이터를 받아가는 방식으로 정보를 도용합니다.
이 과정에서, 해커는 네트워크 상의 다른 컴퓨터들을 속여서,
그들이 보내는 정보가 안전하다고 믿게 만들죠

 

패킷이란 인터넷을 통해 전송되는 데이터의 작은 조각입니다.

이메일을 보내거나 웹 페이지를 불러올 때, 정보는 패킷 형태로 분해되어 전송됩니다.

스니핑은 이러한 패킷을 누군가가 몰래 엿보는 행위를 말합니다.

해커들은 스니핑을 통해 중요한 정보를 가로채곤 합니다.

 

패킷, 헤더에 대해 아직 잘 모르신다면

아래 글을 읽어주세요

https://jdcyber.tistory.com/12

 

패킷(Packet)이란? (쉬운 설명, 구조, 헤더, 인캡슐레이션, 핑, Ping)

패킷 (Packet) 이란 무엇일까요? 패킷은 패키지(package)와 덩어리를 뜻하는 버킷(bucket)의 합성어로 통신망을 통해 전송하기 쉽도록 데이터를 잘게 나눈 전송 단위입니다. 본래 패킷은 소포를 뜻하는

jdcyber.tistory.com

IP 스푸핑이 이루어지기 위해서는

컴퓨터가 서로 신뢰관계(Trust relationship)

맺어져있어야 합니다.

바로 Syn - Ack 관계를 맺는 것이죠

이렇게 A와 B의 컴퓨터가 신뢰관계가 맺어지면

두 컴퓨터 사이에는 아무 제약 없이

서로 접속이 가능하게 됩니다.

위와 같은 시스템을 악용하여

해커가 A의 IP 주소를 가로채서 위장하고

B 컴퓨터에 접근해서 Syn - Ack 관계를 성립하여

공격했다면 이것이 바로 IP 스푸핑입니다.

 

이러한 공격이 실생활에 미치는 영향은 매우 심각할 수 있습니다.

개인의 인터넷 활동을 추적하여 중요한 금융 정보를 노출시키거나,

기업 네트워크를 마비시켜 업무에 차질을 줄 수 있습니다.

이처럼,

우리의 디지털 신원과 활동은 항상 위협받고 있으며, 각별한 주의가 필요합니다.


DNS 스푸핑

DNS 스푸핑 공격에는 스니핑을 이용한

DNS Spoofing과

DNS 서버를 공격하는

DNS 캐시 포이즈닝 (Cache Poisoning)이 있습니다.


DNS 스푸핑

공격 대상을 해커가 스니핑 하고 있다가

정상적인 DNS 응답보다 빠르게 사용자에게

조작된 웹사이트 IP 정보를 담은 DNS 응답을 보내

정상 주소를 입력해도 조작된 주소로

접속하게 만드는 공격 기법입니다.

 

즉, 사용자가 의도하지 않은 주소로 접속하게 만드는 공격을 말합니다.

사용자 입장에서는 정상적인 URL로 접속하지만

실제로는 해커가 만든 가짜 사이트로 접속하게 됩니다.

(조작된 응답 이후에 도착하는 정상 응답은

먼저 수신한 응답을 신뢰하는

네트워크의 특성으로 인해 폐기됩니다)

 

DNS 스푸핑은 도시의 지도를 조작하는 것에 비유할 수 있습니다.
사람들이 특정 위치로 가기 위해 지도를 참조할 때,
해커가 지도 정보를 조작하여 사람들을 자신이 원하는 잘못된 목적지로 안내합니다.
이렇게 하여, 사용자는 자신이 올바른 웹사이트에 접속하고 있다고 믿지만,
실제로는 해커가 조작한 가짜 사이트에 접속하게 되는 것입니다.

 

당신이 은행 웹사이트에 접속하여 중요한 거래를 하려고 하는데,

실제로는 해커가 조작한 가짜 사이트에 접속한 것이라면 어떨까요?

이런 방식으로, 개인 정보와 금융 자산이 위험에 노출될 수 있습니다.

따라서, 우리는 항상 온라인상의 정보와 웹사이트의 신뢰성을 꼼꼼히 확인해야 합니다.


 

DNS 캐시 포이즈닝

DNS 서버의 캐시 정보를 조작하는 공격

DNS Cache Poisoning 공격이라 합니다.

DNS 서버는 부하가 발생하는 것을 막기 위해

상위 DNS 서버에 반복적 질의를 요청하고

캐시를 사용하며 TTL 동안

<TTL (Time to live) 네트워크에서 데이터가

유지되는 시간> 이를 유지합니다.

DNS Cashe Poisoning은 DNS 서버 자체를

공격하기 때문에

DNS 서버의 캐시 정보가 유지되는 동안

해당 서버에 접근하는 다수의 사용자들이

해커가 공격에 사용하는 조작된 DNS 응답을

수신하여 대규모의 보안 사고를 유발합니다.


ARP 스푸핑

ARP 스푸핑은 해커가 MAC 주소를 속여

랜에서의 통신 흐름을 왜곡시키는 공격입니다.

공격 대상 컴퓨터와 서버 사이의 트래픽을

해커의 컴퓨터로 우회시켜

패스워드 정보 등 원하는 정보를 해킹할 수 있습니다.

 

ARP 스푸핑은 사회적 상황에서 누군가를 속여서 자신을 다른 사람이라고 주장하는 것과 비슷합니다.
예를 들어, 한 파티에서 누군가가 자신을 유명인사라고 소개하여 사람들로부터 관심과 혜택을 받는 상황을 상상해 보세요.
네트워크 상에서, 해커는 ARP 스푸핑을 통해 자신의 컴퓨터가 네트워크 상의 다른 컴퓨터나 장치인 것처럼 위장하여,
데이터를 자신에게 전송하도록 속입니다.

 

우리가 가장 흔하게 당하는 이메일 스푸핑은

이메일을 보낼 때 보내는 주소를 위조해서 보내는 것으로

스팸 메일이나 바이러스 감염 메일을 보낼 때

사용되는 해킹 공격 기법입니다.

 

이메일 스푸핑은 우편물에 다른 사람의 이름과 주소를 적어서 보내는 것과 유사합니다.
받는 사람은 편지나 소포가 신뢰할 수 있는 사람으로부터 왔다고 생각하지만,
실제로는 속임수를 쓴 사람이 보낸 것입니다.
마찬가지로, 이메일 스푸핑에서는 해커가 자신의 이메일 주소를 신뢰할 수 있는 발신자의 주소로 위장하여,
받는 사람이 이메일을 신뢰하고 열어보게 만들어, 종종 악성 링크를 클릭하게 하거나 개인 정보를 빼내려고 합니다.

 

중요한 계약서가 포함된 이메일을 기다리고 있는데,

사실 그 이메일은 해커가 보낸 위조된 메시지였다면 어떨까요?

단순히 한 번의 클릭으로,

당신의 개인 정보는 물론 회사의 민감한 데이터까지도 위험에 빠질 수 있습니다.

이러한 이메일 스푸핑은 우리가 늘 경계해야 할 대상입니다.

이메일의 출처를 항상 확인하고,

의심스러운 첨부 파일이나 링크는 열지 않는 것이 중요합니다.


스푸핑 공격으로부터 자신을 보호하는 방법은 여러 가지가 있습니다.

예를 들어, 안전한 DNS 서비스를 사용하거나,

네트워크 보안을 강화하는 것이 좋습니다.

또한, 이메일 스푸핑을 방지하기 위해,

의심스러운 이메일의 출처를 항상 확인하는 것이 중요합니다.

 

스푸핑은 오늘날 디지털 보안의 중요한 이슈 중 하나입니다.

우리가 온라인에서 활동함에 따라,

이러한 공격으로부터 자신을 보호하는 방법을 알고 있어야 합니다.

적절한 예방 조치와 지속적인 교육을 통해,

우리는 해커의 공격으로부터 우리의 정보와 개인 데이터를 안전하게 지킬 수 있습니다.


 

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

댓글에 남겨주신 내용

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

구독 신청하시면 업로드 시 알려드릴게요!

-

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

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

감사합니다!

반응형
반응형

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