틀린 내용이 있다면 댓글로 말씀해주신다면 감사하겠습니다!
해킹의 역사
해킹과 관련된 국내외 사건들을 각 시기별로 나눈 것입니다.
1950년대
: 미국 매사추세츠 공과대학에서 처음 사용되었다 알려졌습니다. 당시 ‘해킹’은 전기 기차, 트랙, 스위치들을 빠르게 조작한다는 의미로 사용되었습니다.
1970년대
: 처음으로 ARPANET를 이용해 이메일 전송에 성공했습니다.
Ray Tomlinson이 이메일 주소 체계를 만들었습니다. (@를 이용해 사용자 이름과 도메인 주소를 분리)
John Draper가 타국처럼 먼 거리에 있는 곳까지 무료로 통화 가능하다는 것을 발견하였습니다.
컴퓨터 보급이 확산되기 시작했습니다.
1980년대
: 로버트 모리스가 인터넷 속도를 늦추고 인터넷 속도와 기능에 데미지를 일으키는 웜을 만들었습니다.
KAIST의 해커 동아리 ‘유니콘’이 창설된 것이 우리나라 해커의 시초로 알려졌습니다.
Chaos Computor Club에 관련된 서독의 해커들이 지문 인증 시스템 해킹, 국가 트로이 목마, 전자투표 해킹 등의 사건을 일으켰습니다.
1990년대
: 인터넷 브라우저 넷스케이프가 처음으로 출시되면서 웹 접근이 가능해졌습니다. 그렇게 되면서 해킹 도구가 웹 상에서 공유되기 시작했습니다.
러시아 해커갱단이 시티은행의 컴퓨터를 침입해 천만달러를 인출하고 전세계 은행으로 이체시키는 사건이 있었습니다. 이들이 미국 법무부, 공군, CIA, NASA를 포함한 미국정부의 웹사이트를 크래킹해 다른 내용으로 바꾸는 웹페이지 크래킹이 일어났습니다.
후반에 들어서서 우리나라 1세대 해커들이 보안 전문 회사를 설립하게 되면서 본격적인 활동 전개되기 시작했습니다.
2000년대
: 우리나라에서 제 1회 세계정보보호올림페어가 개최되었습니다.
ahoo, eBay, Amazon 등에 DoS 공격*이 일어난 적이 있습니다.
DNS 공격으로 인해 마이크로소프트 홈페이지로 통하는 DNS 경로가 마비되어 이틀간 마이크로소프트 홈페이지에 사람들이 접속할 수 없었습니다.
Anonymous가 이 시기에 처음으로 움직였고, 사이언톨로지교 공식 홈페이지 해킹한 사건을 일으킨 적이 있습니다.
2010년대
: Yahoo에서 데이터가 대량으로 노출되어 30억 개의 계정이 손상된 일이 일어난 적 있습니다.
참고)
*웜 : 네트워크를 이용해 전파되는 컴퓨터 바이러스로 스스로를 복제해 다른 컴퓨터를 감염시킴.
*DoS 공격: 시스템을 악의적으로 공격해 해당 시스템의 리소스를 부족하게 만들어 정상적인 운영이나 서비스를 할 수 없게 만드는 공격
*DNS 공격: 변질된 도메인 네임 시스템 데이터가 DNS 리졸버의 캐시에 유입되어 네임 서버가 유효하지 않은 레코드(IP주소 등)를 반환. 공격자는 우회해서 공격할 수 있게 됨. 사용자가 맞게 주소를 입력했어도 본래 웹사이트 주소와 다른 주소로 이동하게 되어 서비스를 이용할 수 없게 되는 것
출처)
cybernews.com/security/brief-history-of-cybersecurity-and-hacking/
ksakosmos.com/post/해킹의-역사
웹 해킹 발전 배경
1990년대에는 시스템과 네트워크의 취약점을 공략하는 공격 기법이 대부분이었습니다. 1990년대 중반까지만 해도 단순한 텍스트 위주 정보를 PC 통신으로 주고받았는데 이는 통신 프로그램을 사용해야지만 접속이 가능했습니다. 당시 통신 프로그램은 전화 모뎀*을 이용했습니다.
당시 주요 해킹 기법은 웹 사이트를 통해서가 아닌 시스템상에 열려 있는 포트를 조사해 해당 포트에 열려 있는 데몬 프로그램*의 취약점을 이용, 이후 시스템에 접근해 다음 레벨 권한을 가진 파일이나 root 권한으로 setuid*가 걸린 파일을 찾아내 공략하는 형식이었습니다.
2000년까지만 해도 해킹의 주 공격대상은 시스템이었는데 해커들의 관심이 웹에 향하고 네트워크 보안 장비(방화벽, IDS)의 개발로 그 대상이 달라졌습니다. 네트워크 포트에 대한 직접 공격이 어려워지자 공격자들이 시스템에 접근하기 위해 외부에 오픈되어 있는 웹을 공격 대상으로 선택한 것입니다. 방화벽이 없던 시기에는 수많은 포트가 열려 있어서 공격자가 공격하기 쉬웠습니다. 그러나 방화벽이 생긴 이후에는 80번 웹 포트 외에 모두 닫혀 있는 경우가 생겼습니다.
이로 인해 점점 시스템과 네트워크보다는 웹쪽에 초점을 맞춰 해킹에 대해 연구하기 시작했다.
참고)
*전화 모뎀: 모뎀은 단말장치에서 발생한 디지털 신호를 아날로그 신호로 변환하여 통신회선으로 전송시키는 역할과 통신회선에서 수신한 아날로그 신호를 통신 제어장치나 컴퓨터로 전송하기 위해 디지털 신호로 변환하는 역할을 하는 신호 변환장치. 전화 모뎀은 통신회선으로 현재 사용중이 아닌 작동되는 전화선을 사용한 모뎀.
*데몬 프로그램: 사용자가 직접적으로 제어하는 것이 아닌 백그라운드에서 계속 작동하고 있는 프로그램.
*setuid: 파일이 파일 소유자 권한으로 실행되도록 하는 ID
웹 해킹 과정
웹 해킹 하는 방법으로 크게 다음과 같이 나눌 수 있습니다.
1. 취약점이 있을 만한 부분을 찾아 있는지 확인하고 그곳을 통해 침투 시도
2. 전반적으로 발견되는 모든 공격 가능한 부분을 찾아 매트릭스를 작성한 후 하나씩 시도
첫 번째는 취약점 하나 발견하고 그 하나를 가지고 시도한 다음 다른 취약점을 찾는 것이고, 두 번째는 찾을 수 있는 취약점은 다 찾고 난 다음에 그중 하나를 골라 시도한다고 다시 얘기할 수 있을 것 같습니다.
일반적인 해킹 과정은 다음과 같이 진행된다고 할 수 있습니다.
1. 공격 대상 선정
: 보통 방문자가 가장 많은 웹 사이트를 주요 공격 대상으로 선정.
2. 정보 수집
: 공격 대상이 보유하고 있는 외부 접점 중에서 웹 사이트를 통해 웹 애플리케이션을 개발할 때 사용한 언어, 웹 사이트 내 주요 공격 대상의 기능, 웹 서버의 종류 등의 정보를 알아보는 것. 이 단계에서는 공격 대상의 특성과 취약한 표면을 찾음.
- 자동화 도구 이용 : 홈페이지 접속해서 홈페이지 파일 확장자 확인하면 어떤 운영체제를 기반으로 만들어졌는지* 알 수 있음. 공격할 웹사이트에 접속하고 가장 많이 발생하면서 영향력이 큰 취약점이 있을 곳을 조사. 영향력이 큰 취약점이라는 것은 발견한 취약점으로 웹 서버 권한 얻거나 내부 중요 데이터베이스에 접근할 수 있는 취약점을 의미. 자동화 도구로 Burp Suite가 있음.
- 브라우저 확장 기능 이용 : 해당 웹 페이지가 어떤 코드로 작성되고 어떤 구조를 갖는지 확인 가능 <마이크로소프트 엣지> 화면 우측 상단 점 세 개 부분 클릭 - 기타 도구- 개발자 도구 <구글>화면 우측 상단 점 세 개 클릭- 도구 더보기 - 개발자 도구


- 검색 엔진 이용:
| site: | 특정 도메인으로 지정한 사이트에서 검색하려는 문자열이 포함된 사이트 찾을 경우. 예) site:co.kr (검색할 문자열) |
| filetype: | 특정 파일 타입을 검색할 때 사용. 예) filetype:txt (검색할 문자열) |
| link: | 검색하려는 문자를 링크에 포함하고 있는 웹페이지를 검색할 때 사용 |
| cache: | 백업해둔 특정 페이지의 백업 데이터를 확인할 때 사용. *노출되면 안 되는 정보가 백업되어 있으면 위험하니 이를 삭제할 것* |
| intitle: | 디렉터리 리스팅*에 취약한 사이트 검색할 때 사용. *웹 서버 파일들을 웹 서비스를 통해 리스트로 보여주는 기능. *취약점은 서버에 있는 데이터 노출 가능성 있다는 것. |
- 스캐닝 도구: 웹 서버의 종류와 버전, 디렉터리 정보나 중요한 파일 정보가 존재하는지의 여부, 웹 서버 자체의 취약점 검사 가능. 예) Nikto, Wikto
3. 취약점 분석
4. 공격
5. Report, Defacement(웹사이트 변조), 흔적 제거 등
참고) 리눅스와 윈도우를 기준으로 작성. 맞는지 확실하지는 않음...(리눅스를 사용해본 적이 없음...)
*파일 확장자를 통해 어떤 운영체제를 기반으로 만들어졌는지 유추 가능 이유
: 압축 확장자를 예시로 든다면 일반적으로 윈도우에서는 .zip를, 리눅스에서는 tar 방식*을 이용.
리눅스는 사용자가 알아보기 쉬우라고 확장자를 사용. 반드시 확장자를 가지고 파일을 관리하는 체계가 아님.
윈도우는 확장자를 가지고 파일을 인식하기 때문에 확장자가 없으면 어떤 프로그램으로든 연결해서 확인이 불가능. 사용자가 아닌 프로그램 내부에서만 사용되기 때문.
*tar 방식: 압축보다는 여러 파일을 하나로 묶어놓는 방식.
참고자료 https://tmmse.xyz/2020/04/22/linuxandwindows
웹 애플리케이션의 취약점
OWASP는 오픈소스 웹 애플리케이션 보안 프로젝트로, 전 세계 웹 보안 전문가들이 모여 웹 애플리케이션을 체계적으로 보호하기 위한 방안을 연구하기 시작하면서 이러한 정보를 공유하고 체계를 세우는 자발적인 온라인 정보 공유 사이트이다. 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는데 웹 애플리케이션 상에서의 취약점을 10개를 뽑아 특정 시기에 발표합니다. 2004년에 처음 발표하고 2007, 2010, 2013, 2017, 2021에 차례대로 발표되었습니다. 아래는 2017년도 것에서 2021년도 때 어떻게 바뀌었는지 보여주는 사진입니다.

출처: https://owasp.org/www-project-top-ten/
A01. 잘못된 접근 통제
: 개발자가 코드를 작성할 때 접근 통제(디렉터리나 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권하는 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것) 로직을 누락해서 발생하는 위험.
2021년 버전에서 가장 심각한 웹 애플리케이션 보안 위험 1위로 선정됨.
A02. 암호화 오류
: 암호화와 관련된 오류. 개인정보, 시스템 접속 정보 등 암호화로 보호해야 하는 정보가 그대로 노출되거나 혹은 복호화가 쉽게 되는 경우가 있음.
민간함 데이터 노출이나 시스템 손상으로 이어질 가능성 존재.
A03. 인젝션
인젝션이란 일반적이지 않은 일련의 입력값을 주입하여 처리 과정에서 프로그램이 정상적으로 작동될 수 없도록 방해하는 것을 의미. 내부 데이터베이스와 연동한 결과를 웹 애플리케이션에 보내주는 부분에서 주로 발생
A04. 안전하지 않은 설계
: 보안 환경을 설계할 당시 꼼꼼하게 살피지 않아 결함이 생겼을 경우.
A05. 보안 설정 오류
: 애플리케이션을 설치할 때 생기는 기본 페이지를 삭제하지 않고 방치하거나 최신 보안 패치를 업데이트하지 않는 경우
A06. 취약하거나 오래된 컴포넌트
: 컴포넌트란 재사용이 가능한 각각의 독립된 모듈을 의미. 취약하거나 오래된 컴포넌트를 그대로 사용할 경우 공격자의 공격에 쉽게 뚫린 수 있음. 오래될수록 공격자가 다양한 시도를 해봤을 수 있고, 만약 어떤 공격에 한 번 뚫린 적이 있는데 컴포넌트를 바꾸지 않는다면 취약점이 알려진 것을 그대로 사용한다는 것을 의미. 데이터 손실이나 서버 장악 문제가 생길 수 있음.
A07. 식별 및 인증 실패
: 웹 애플리케이션이 사용자에 대한 인증 및 세션 처리를 잘못했을 때 발생.
A08. 소프트웨어와 데이터 무결성 실패
: 무결성을 확인하지 않고 소프트웨어를 업데이트하는 경우
A09. 보안 로그 및 모니터링 실패
: ‘충분하지 않은 로깅 및 모니터링’이 변경된 것. 로깅(어떤 소프트웨어가 실행될 때 발생하는 이벤트를 추적하는 수단.
A10. 서버 사이트 요청 변조
: 서버에서 이뤄지는 요청을 공격자가 변조하여 서버로 보내 공격자가 원하는 행동을 이끌어내도록 만드는 위험.
'웹 해킹' 카테고리의 다른 글
| Ch03 인증 기술과 접근 통제(실습) (0) | 2023.01.18 |
|---|---|
| Ch 03 인증 기술과 접근 통제 (0) | 2023.01.18 |
| Ch 02 웹 해킹의 기초(실습) (0) | 2023.01.11 |
| Ch 01 인터넷과 웹의 이해(실습) (1) | 2023.01.04 |
| Ch 01 인터넷과 웹의 이해 (0) | 2023.01.04 |