본문 바로가기
좋은 개발자가 되기위한 방법들

Hacking의 기초이론과 공부해가는 과정

by chief_sac 2021. 8. 27.
반응형

 

서론

우리가 흔하게 듣는 해킹 뉴스, 미디어들을 통해 자주듣고 접할수있는 단어이고 게임을 해봤다면 어떤 문제가 일어나는지 조금이나마 우리는 접해보았을것이다. 컴퓨터를 좋아한다면 한번쯤 상상하던 해커가 되어보고싶은 꿈을 머리한편에서 상상했던 적도 있었을 것이고 나 또한 상상만 하며 이미 머리에서 관심이 벗어났지만 어느덧 개발자라는 직업을 가지게 되며 직간접적으로 신경을 써야만 하는 일이고 좋은 개발자가 되기 위해서는 어려워보이지만 도전해야하는 일이기에 천천히 공부하려고 한다.

본론

우선 해킹이 무엇인지를 알아야하는데

해킹은 컴퓨터 시스템에서 취약한 부분을 찾아내는 단계와 이를 공격하는 단계로 이루어지는데 , 이때 발견한 치명적인 취약점을 서비스하는곳에 제보하여 해당 시스템의 안전성을 높이는데 기여하느냐 아니면 부정한 목적을 위해서 사용하느냐에 따라 보안 전문가가 되거나 , 사이버 범죄자가 될 수도 있다. 즉 칼과 같다고 생각하는데 어떠한 칼은 사람을 위협하는데에 사용된다면 흉기로서의 기능을 할 수 있고 병을 치유하는데에 사용한다면 그것은 사람을 살리는 일을 할 수 있는 그러한 도구라고 본다.


해킹은 3가지 정도의 큰 용어로 나눠지는데 **웹 해킹(Web Hacking)**과 포너블(Pwnable, or System Hacking) 그리고 리버싱(Reverse Engineering) 이다. 하나씩 간단하게 공부한것을 정리해보자면



Web Hacking


웹 해킹이란 웹 서비스 상에서 발생될 수 있는 모든 보안 허점(Security Hole)을 이용해 악의적인 행위
  • 웹 서비스를 대상으로 공격을 주로하지만 프레임워크(Spring), 웹 어플리케이션 서버 대상으로 공격을 수행할수도 있다.
  • 웹 서버와 클라이언트에서 발생하는 각종 취약점들과 이를 공격하는 기법들이 있는데 아래에 특징만을 간단하게 정리하고 추후에 하나씩 상세하게 정리하겠다.
  • 웹 해킹을 방지하기 위해서는 보편적인 공격절차에대한 정보수집을 주기적으로 하여 대비하여야한다.
  • 공격절차 : 대상탐색 ⇒ 대상지정 ⇒ 정보수집 ⇒ 취약점 분석 ⇒ 공격 ⇒ 결과도출
  • 웹 해킹의 종류
    • SQL Injection: 사용자 입력값에 SQL구문을 입력함으로 Application에서 데이터베이스로 비정상적인 요청을하여 정보조회를 하거나 인증우회 혹은 테러목적인 데이터 삭제를 한다.
    • Cross-Site Scription (XSS) : 해커가 게시판에 악의적인 Script를 게시글에 삽입하여 그것을 다른 사용자가 클릭하면 삽입된 Script를 통해 공격하는 기법인데 주로 세션 하이제킹, 피싱, drive by download 공격을 하게된다.
    • CSRF Attack: Cross Site Request Forgery 즉 XSS와 같이 스크립트를 삽입하여 인증권한을 이용해서 의도하지 않은 요청을 서버에 대신 전송하게하는 수법이다. 사용자의 패스워드를 변경하는 행위를 할 수 있다.
    • Command Injection: 사용자 입력값에 시스템 명령 구문을 이용해서 공격자가 의도한 명령을 삽입하는 공격 기법이다.
    • File Upload Attack: 파일을 지정된 경로가 아닌 경로의 파일을 다운로드하는 공격기법은데 passwd파일을 받는 행위등이 주로 일어난다
    • File Upload Vernerability: 위 FUA와 반대의 개념으로 악성파일을 업로드하여 시스템 명령 제어권한을 탈취하는 행위,기법이다.
    • JavaScript Injection: 민감한 데이터를 잘 관리하지 않은 사이트의 경우 관리자console을 열어 js를 이용하여 데이터를 빼내는 기법이다
    • DDoS : Distributed Denial of Service라고 부른다. 직역하면 분산 서비스 거부 공격이 된다. 그 이름처럼 분산된 시스템을 이용하여 서버에 비정상적으로 많은 트래픽을 보내 마비시키는 공격기법
    • Dictionary Attack : 미리 데이터베이스에 등록해놓은 수많은 문자열을 암호로 대입하는 공격, 서버를 제공하는 내부에서의 유출을 통해 생기는 문제이다.
    • Rainbow Table : 여러가지 해시함수로 만든 문자열을 정장하여 분석하는 표


 

Pwnable


시스템 해킹은 소프트웨어의 취약점을 찾아서 이를 공격하는 해킹 분야
  • 포너블의 목적은 관리자의 권한을 탈취하여 중요한 정보를 가져가는 것이다.
  • 과정은 크게 4가지정도로 취약점확인 ⇒ 분석 ⇒ 수집 ⇒결과도출
  • 사회의 모든 기반 시설들이 많은 소프트웨어로 제어되고 있으니 그만큼 위협요소가 크다.
  • Pwnable공격기법의 종류
    • BufferOverFlow : 정해진 버퍼사이즈 넘게 입력받을때 생기는 취약점
    • ReturnOriantedProgramming : return-oriented-programming 의 약자로, 마치 프로그래밍 하듯이 리턴주소를 조작해 함수를 실행하는 기법이다 BOF 를 일으켜 리턴 주소 이후를 덮을 수 있을 때 사용된다.
    • ReturnToLibrary: Library 내에 함수로 Return 하는 공격기법, 라이브러리내에 함수 실제주소를 알아야 리턴할 수 있는데, 프로그램에서 실제주소를 출력해주지 않는 한단독으로 쓰이는건 어렵다.
    • ReturnToCsu : Return To Csu 의 약자로 바이너리내에 __libc_csu_init 함수가 있을 때 이용할 수 있습니다.
    • STACK-PIVOTING
    • Integer Issues
    • FormatStringBug
    • OutOfBound

.. 추가예정(이해가 어려움)

 

 

 

Reverse Engineering


리버싱은 프로그램을 역으로 분석하여 작동 원리를 알아내는 기술로 소프트웨어에서 취약점을 파악하거나 악성 프로그램의 행동을 분석하는 등의 용도로 사용된다.
  • 프로그램 분석에 있어서 모든곳에서 기본이된다.
  • 많은 배경지식과 경험을 요구하며 프로그램의 구성요소를 파악하는데 목적을 두고있다.
  • Reverse Engineering의 목적
    • 취약점분석
    • 악성코드 분석
    • 버그수정
    • 사용 제한 기능 제거(인증 절차 무시)
  • 컴파일을 통한 프로그램을 제작하는과정은 원래 ( 소스코드 ⇒ 어셈블리어 ⇒ 바이너리)형태인데 리버스 엔지니어링 기술을 이용하여 기존소스를 추적하면 (바이너리 ⇒ 어셈블리어 ⇒ 소스코드)의 과정을 하여 자료를 얻을수있다.
반응형