해킹용OS 종류와 리눅스운영체제 공부

해킹용OS 종류와 리눅스운영체제 공부


해킹용OS 종류와 리눅스운영체제 공부

 

 

컴퓨터에 관심이 많이 있고 여러가지 공부를 해봤거나

각종 툴에 관심을 가지고 있는 사람이라면 누구나 한번쯤은 들어봤거나 다운을 받아봤을법한게 해킹용OS일 겁니다.

물론 그냥 들어보기만 했고 쉽게 다운받을수 있다는 생각을 잘 못하기 때문에

애초에 찾아볼 생각을 해보지 않았을수도 있고 다운을 받아봐도 어떻게 사용해야하는지 잘 모를수 있으니

그냥 알고만 있는 사람들도 있었을텐데 오늘은 이런 여러가지 해킹OS에 대해서 설명해볼까 합니다.

 

 

 

보통 운영체제라고 하면 당연히 집에서 사용하는 윈도우라는건 알고 있으실텐데

해킹용OS는 모두 리눅스라는 오픈플랫폼인 운영체제로 만들어 져 있기 때문에

단순하게 툴 사용을 할게 아니라면 리눅스에 대해서 알고 있는게 중요하기도 합니다.

일단 이런거에 앞서서 대표적으로 잘 알려져 있는 몇가지를 설명해 드리도록 하겠습니다.

 

 

첫번째로는 가장 흔하고 많이 알려져 있는 해킹용OS인 백트랙인데

보통 해킹운영체제라고 각종 해킹과 관련된 도구들이 있다보니 뭔가 불법적으로 보일수가 있는데 이건 오해이고

실제로는 정보보안을 테스트하기 위해서 만들어진거지 실제 불법적인 해킹을 하려고 만들어 진건 아닙니다.

백트랙은 우분투리눅스를 기반으로 만들어 졌고 침투테스트 전용으로 만들어진 운영체제로

이를 이용해서 모의해킹을 할수가 있는데 IWHAX, WHOPPIX, Auditor 3개의 모의해킹용 리눅스체제를 합친거죠.

이런 운영체제를 사용하려면 우선 다운을 받아야 하는데 생각보다 쉽게 다운을 받을수 있고

누구나 사용할수 있는 오픈소스이기때문에 설명서를 통해 사용법만 잘 인지하고 있다면 누구나 활용이 가능하죠.

 

 

두번째로는 백트랙의 후속버젼인 칼리 리눅스라는 해킹용OS인데

백트랙처럼 다양한 해킹 도구들이 있는데 칼리 리눅슨느 백트랙과 달리 우분투를 기반으로 만든게 아니라

데비안을 기반으로 만들어 졌습니다.

그리고 NetHunter라고 넥서스 디바이스를 위한 안드로이드 ARM기반의 침투 테스트 공격 도구로

모바일에서 한두번의 클릭만으로도 MiTM 공격이나 무선공격, Exploit공격 등 PC환경의 칼리리눅스에서 사용하는

대부분의 기능을 사용자 그래픽 환경으로 지원을 하고 있기도 합니다.

여기서 우분투와 데비안이 무엇인지 잘 모르는 분들도 있을건데 이런 분들은 아마

리눅스란 자체를 잘 모르는 분들이 아닐까 싶기는 합니다.

 

 

그리고 세번째는 누구나 한번쯤은 들어봤을법한 해커그룹인 어나니머스에서 제공하는

해킹 전용 OS인 어나니머스-OS가 있는데 이역시 우분투를 기반으로 만들어졌으며

DDoS공격에 관련된 공격도구가 많이 있는데 DDoS 공격 시뮬레이션 도구와 DDOSIM과 호스트IP를 찾는

파인트 호스트IP와 SQL인젝션 공격이 가능한 Havij등 있습니다.

아무래도 유명한 해커그룹인 만큼 아직 초보자들에게는 많은 관심을 가지게 되는 해킹용OS일진 몰라도

위에 언급한 다른 운영체제들 보다는 기능적인 측면으로는 부족한게 많이 있기 때문에

리눅스 공부를 제대로 해봤던 친구들에게는 조금 인기가 없지 않을까 싶습니다.

 

 

네번째로는 BackBox라는 해킹용OS인데 이역시 우분투기반으로 만들어졌고

가볍고 빠른 리눅스 배포판중 하나인데 잘 알려진 해킹도구들을 모아 침투 테스트와 보안평가를 위해서 개발되었죠.

이번에 BackBox 4.0이 출시 되면서 다시 인기를 끌것으로 보이는데

실제 리눅스 운영체제 공부부터 체계적으로 공부를 잘 했던 분들은 다른 해킹OS보다는

훨씬더 유용하다고 얘기를 많이 하기도 하죠.

솔직히 어떤 해킹용OS를 사용하더라도 교육목적으로는 별로 상관은 없기 때문에

인터페이스가 편한걸로 선택해서 하는게 좋을것 같기도 한데

우선은 가장 기본이 되는 리눅스 운영체제에 대해서부터 공부를 해보시는게 좋을겁니다.

 

 

 

이 외에도 많은 종류가 있기는 하지만 일단 잘 알려져 있고 한번쯤은 접해봤을법한 것들만 위주로 간단히 설명 했는데

이런 각종 해킹OS를 이용해서 실제 일어나는 여러가지 해킹범죄들을 따라할수도 있기 때문에

악용을 하거나 교육목적이 아닌 다른 용도로 사용을 하다가는 큰일이 날수도 있으니

조심해야하고 어느정도 수준이 되시는 분들은 어차피 리눅스 운영체제가 오픈소스이기 때문에

나만의 OS를 만들어 보는것도 좋을것 같습니다.

물론 이정도 수준이 되려면 상당히 많은 공부를 해야겠지만요....

 

 

그냥 간단하게 명칭만 소개했는데 여기서 실제 사용하는 방법에 대해서 세세하게 설명했다가는

아무것도 모르는 학생들이 따라하다 범죄자가 될수도 있기 때문에

관심이 있는 분들은 기초부터 공부를 해보면서 직접 기술력을 키워보는걸 추천해 드립니다.

우선 기초가 되는건 리눅스 운영체제이지만 컴퓨터공부를 한번도 해본적인 없는 분들은

C언어라는것 부터 한번 해보시는게 좋을것 같고 프로그래밍 능력이 좋으면

실제 해킹을 할때에도 상당히 유용한 부분이 많이 있고

자신이 직접 해킹 툴도 만들어 낼수가 있기 때문에 이런 기본이 되는 과목들을 잘 공부해두는게 좋습니다.

 

 

 

그냥 단순 흥미나 재미때문에 알아보는 분들은 이런 기초과목이 지루하고 어렵기 때문에

전혀 중요하다고 생각하지 않고 단순하게 툴을 다운받고 설치해서 사용하는거에만

관심을 두는데 이런 분들은 절대로 해킹용OS를 다운받거나 사용하는 일은 없었으면 합니다.

요즘에는 개인정보보호법이 많이 개정이 되기도 했고 법도 강화되고 있기 때문에

장난 삼아서 프로그램 한번 실행해 봤다가 돌이킬수 없는 실수가 될수도 있으니

이런 공부를 하든 뭘 하든 자신이 하는 행위에 대해서 책임을 질수 있다는 생각이 확고하게 들었을때

접하는게 좋고 그럴려면 당연히 기초과목인 리눅스 운영체제부터 체계적으로 공부를 해야겠죠.

 

 

보통 잘 모르는 분들이 이런 기초과목이 재미가 없을거라고 생각을 하는데

오히려 컴퓨터에 정말로 흥미가 많이 있는 분들이라고 한다면

리눅스 같은 기초 운영체제에 대해서 공부를 해본다면 생각보다 활용할수 있는 기능도 많고

자신이 집에서 사용하는 윈도우라는 운영체제와는 좀 다르기도 하고

바꾸거나 여러가지 기능을 추가하고 나만의 운영체제를 만들어서 사용할수도 있기 때문에

생각보다 굉장히 재미있는 과목이 될수 있기도 합니다.

 

 

 

요즘에는 해킹사건들이 많은 이슈가 되고 있어서 이런 해킹용OS를 단순하게 악의적인 목적에 활용한다고 생각하는데

위에 언급했듯이 이런 모든 운영체제들은 해킹침투테스트를 목적으로 개발이 된거기 때문에

화이트해커로 활동하는 전문가들이 해킹이 가능한 여러가지 상황들을 분석해

보완하는데 그 목적이 있는거니 이런 공부를 하려는 분들도 이런 취지에 맞게끔 윤리적인 생각을 가지고

접근을 해도 얼마든지 재미있게 공부를 해 나갈수가 있기도 할겁니다.

 

 

일단 기초가 되는 과목들부터 시작을 해서 조금씩 고급기술을 체계적으로 익혀 나가는게 중요한데

분야에 대한 정보를 알아보기도 어렵고 어떤 과목들을 공부하고 어떻게 활용이 되는지

전혀 알지 못하기 때문에 많은 학생들이 계획을세우기가 어려운 경우가 많이 있는것 같습니다.

이런 기초가 되는 과목은 어렵다고들 얘기를 많이 하지만 실제로 공부방법만 잘 인지하고 접근하면

그렇게 어렵지만은 않기도 하기 때문에 단순하게 해킹용OS를 사용하는 방법에만 집착하지 말고

리눅스 운영체제나 C언어나 이런 기초적인 부분을 익혀서 어떻게 활용하는지를 알아보면

훨씬더 재미있고 쉽게 공부할수가 있기도 할겁니다.

 

 

 

이런 기초적인 공부자료같은 경우는 쉽게 구할수도 있기때문에 직접 접해보면 좀더 좋은 경험이 될텐데

관심이 있는 분들은 아래 이미지 링크를 통해서 관련 카페로 연결해 놓았는데

이곳에 관련 기초 공부자료나 기타 해킹분야나 여러가지 분야에 대한 정보들도 많이 있으니

필요한 분들은 이용해 보시면 좀더 재미있게 공부를 해 나갈수 있을것 같습니다.


리버스엔지니어링(리버싱) 툴 종류 급증하는 악성코드 분석공부

리버스엔지니어링(리버싱) 툴 종류 급증하는 악성코드 분석공부


리버스엔지니어링(리버싱) 툴 종류

급증하는 악성코드 분석공부

 

 

해마다 PC를 공격하고 위협하는 악성코드들이 증가하고 있다고 하는데

국내 대표기관인 KISA(한국인터넷진흥원)에서 이를 담당하고 있는 인력은

급증하는 수에 턱없이 부족한 상황이라고 하고 오히려 예산이 줄어들고 있다고 하네요.

담당자도 몇년 전부터 4명이었는데 아직도 4명이서 모든 업무를 처리한다고 하는데

이게 4명이서 가능한 일인가 싶기도 하네요.

 

 

 

이런 여러가지 악성코드들을 분석을 하기 위해서 필요한 기술이

리버스엔지니어링(리버싱)이라는 건데 사용하는 프로그램이 목적에 따라서 다르기 때문에

적절한 상황에 맞춰 필요한 툴을 이용해야 합니다.

물론 처음부터 그냥 프로그램 사용법을 익힌다고해서 이해할수 있는 수준의 레벨이 아니기 때문에

기초지식이 되는 프로그래밍이나 OS나 네트워크에 대한 부분을 어느정도 숙지하고 있어야 하고

이후에 목적에 따라서 필요한 툴을 이용해서 분석을 하게 되기 때문에 공부할게 많은 분야이기도 하죠.

 

 

일단 리버스엔지니어링이란 그냥 단순하게 말하면 프로그램을 분석하는 기술인데

리버싱을 사용하면 코드가 여러가지가 있는데 소스코드, 헥사코드, 어셈블리코드가 있습니다.

소스코드는 흔히 우리가 C언어같은것들을 배울때 사용하는 코드를 말하고

헥사코드와 어셈블리코드는 평소 공부할때 접하기 어렵기 때문에 이게 뭔가 할수도 있긴 합니다.

이를 이용해 디스어셈블러 툴을 이용해서 디스어셈블된 코드를 분석해 소스코드를 복구하거나

프로그램이 어떻게 돌아가는지 확인을 할수도 있기 때문에

수정 보완을 할수가 있는거고 이를 악용해서 게임쪽에서 흔히 말하는 버그나 핵을 만들어 내죠.

 

 

 

물론 이런 목적으로 사용되는건 아니고 보안개념에서 사용을 하는건데

여러가지 상황에 따라서 사용되는 리버싱 툴에 차이도 있기도 한데 어쨋든 모두 리버스엔지니어링의 한 부분이죠.

일단 현재 실행중인 함수의 디스어셈블된 코드를 보여주고 사용자가 코드를 따라가면서 각 코드 라인에서

어떤 식으로 동작을 하는지 볼수 있는 디버거 툴들이 있는데 대표적인걸로는

Ollydbg를 이용해서 역분석을 할수도 있고 이 외에도 Windbg와 IDA가 있습니다.

이런것들이 악용을 한다면 나쁜 용도로 사용할수 있지만 좋은 용도로 사용하면 현재 문제가 되는

여러가지 악성코드를 분석해서 보안할수 있도록 보안업데이트를 할수가 있는거죠.

 

 

그리고 리버싱 툴중에 파일과 레지스트리의 변화와 네트워크상태나 프로세스의 상태를 분석할수 있는

시스템 모니터링 툴로는 Filemon과 Regmon, Tcpview, Procexp, WireShark가 있는데

이중에서는 리버스엔지니어링 공부를 시작하려는 분들은 와이어샤크를 가장 많이 들어보지 않을까 싶네요.

와이어샤크는 네트워크 모니터링 툴인데 프로토콜로 전송되는 패킷을 분석해서 보여줍니다.

 

 

 

그리고 이미 컴파일된 바이너리를 역으로 컴파일 해주는 툴도 있는데

디컴파일러 툴로 플래쉬 디컴파일러인 sothink SWF Decompier와 닷넷 프로그램 디컴파일러인 Reflector과

델파이 디컴파일러 DeDe가 있습니다.

그리고 바이너리를 분석해서 어떤 패커를 이용해서 바이너리를 패킹했는지, 어떤 언어로 제작했는지 알아내는

PEID와 리소스해커, String이 있고 프로그램을 압축하거나 보호하기 위해서

사용되는 패커들이 하는 일을 반대로 해주는 언패커 툴인 Universal Extractor과 VMUnpacker이 있습니다.

 

 

그리고 바이너리 파일을 수정하는 헥스에디터에 울트라에디터와 Hex Workshop이 있고

루트킷 탐지하는 GMER, IceSword등 다양한 상황에 따라서 이용하는 리버싱 툴에 차이가 있는거죠.

그렇기 때문에 리버스엔지니어링 공부를 한다고해도 목적과 상황에 따라서 방향에 차이가 있고

기본적으로 요구되는 지식에도 많은 차이가 있을수밖에 없는겁니다.

보통 많은 학생들이 공부하는 목적을 보면 보통 취약점분석이나 악성코드분석을 위해서 많이 하는데

깊이 파고들면 파고들수록 어렵고 복잡한 분야중에 하나입니다.

 

 

 

물론 어떤 분야든 깊게 파고 든다면 안어려운게 없긴 하겠지만 보안쪽으로 진로를 잡고 있다고 한다면

이런 리버스엔지니어링에 대한 부분은 필수라고 할수도 있기 때문에 모든 종류를 다 익힐 필요까지는 없겠지만

진출 방향에 맞춰 관련된 리버싱 툴에 대해서는 어느정도 숙지를 해주시는게 좋습니다.

일단 악성코드를 직접 만들거나 분석을 하기 위해서는 기초 프로그래밍 능력이 탄탄해야 하기 때문에

이것부터 공부를 체계적으로 잘 해주셔서 리버싱기술까지 익히는게 중요하고

악용하면 절대로 안되겠죠.

 

 

보통 보안쪽으로 진로를 잡고 있는분들이 많이 혼란스러워하는 부분이

분야가 다양하다는걸 모르기때문에 웹상에서는 어떤걸 공부해야한다 뭘 알아야 한다는 말이

전부다 다를수밖에 없어 뭐가 맞는 말인지 잘 모르는 경우가 많이 있습니다.

하지만 어떤 말이든 다 맞다고 볼수가 있는데 그 이유가 위에 여러가지 리버싱툴 종류에 대해서 알려드렸듯

상황과 목적에 공부과정이 달라지듯이 보안분야도 생각보다 다양하게 나눠져 있는만큼

어떤 방향으로 준비를 하느냐에 따라서 기초과목에 차이가 있고 각종 해킹기법이나 리버스엔지니어링같은

역공학 기술도 이에 맞춰 관련 기술력을 키워야 하기 때문이죠.

 

 

 

위에도 많은 종류의 리버스엔지니어링 툴 종류를 설명하긴 했지만 단순 명칭만을 알려드린거라

어느정도 리버싱 공부를 목적에 두고 있거나 악성코드분석에 대해서 공부를 해보려고 한다면

각 툴에 대해서 정확히 알아보고 필요한 기술을 익혀야 하고

사전에 위에 언급한 기초 지식이 되는 프로그래밍이나 운영체제, 네트워크에 대해서부터 숙지를 해야하는겁니다.

현재 국내 대표라고 할수 있는 KISA에서도 전문인력이 턱없이 부족한 시점이기 때문에

많은 인재들이 이런 쪽으로 공부를 통해 기술력을 잘 익혀서 현재 국내 문제가 되고있는

보안취약점들을 분석해서 찾아내는 전문 화이트해커들이 많이 있다면

지금보다는 훨씬 더 해킹위협에서 안전할수 있지 않을까 싶습니다.

 

 

사회적으로도 이런 보안인력을 양성하는데 목적을 두고 있고 요즘에는 모의해킹 분야에 대한 인력 양성에

많은 투자를 하고 있는만큼 이런 리버스엔지니어링 기술을 공부하려고 하는 사람들도 많아질것 같은데

관심이 있어도 어떻게 어떤 방법으로 해야할지 잘 모르는 경우가 대부분이라

그냥 간단하게 소개를 하게 된건데 중요한건 개인 상황에 맞춰 필요한 리버싱 툴을 익히는거기 때문에

글자체가 많은 도움이 되지는 않을겁니다.

그래도 악성코드분석이 됐든 뭐가 됐든 관련 공부를 하기 위해서는 분야선정이 중요하다는거고

분야에 맞춰 필요한 프로그램들이 있기 때문에 이런 종류에 맞춰서

요구되는 기본이 되는 과목들을 우선 공부를 시작해 나가면 되는것 뿐입니다.

 

 

 

보통 리버싱쪽에서는 프로그래밍 능력이 많이 요구되기 때문에

기초지식으로 프로그래밍 언어인 C언어부터 공부를 하면서 자신이 소질이 있는지에 대해서도 고민을 해보시는게 좋고

만약 프로그래밍 능력이 많이 부족한 상황이라고 한다면 이런 능력이 많이 요구되는

리버스엔지니어링 툴보다는 그나마 요구가 덜되는 시스템 파트쪽으로 방향을 잡는게 좋을것 같고

악성코드분석이나 제작하는 부분도 프로그래밍 능력이 많이 요구되기도하니

이쪽 분야로 진로로 꼭 생각을 하고 있다고 한다면 어렵더라도 C언어부터 프로그래밍 능력을 키우는데

중점을 두고 공부를 해주시는게 가장 좋을것 같습니다.

 

 

이런 기초 프로그래밍 능력같은 경우는 개인적으로도 충분히 공부가 가능하고

공부방법만 정확히 인지하고 있다면 이해하는게 많이 어렵지는 않은데

관련 자료가 필요하신 분들은 아래 이미지 링크를 통해서 공부를 할수있는

카페로 연결해 드릴테니 접속하셔서 기초부터 공부를 해보시면 될것 같습니다.


블랙해커에 관심을 갖는 분들...

블랙해커에 관심을 갖는 분들... 


 

예전보다는 현재가 IT라는 용어들이 좀더 친숙하고 익숙하게 들어보기는 하지만

아직까지 그 개념에서 대해서는 잘 파악하는게 어려움이 많습니다.

그렇다보니 여기저기서 얘기하는 말들이 달라 혼란스러운 경우도 종종 있는것 같은데

해커에는 크게 화이트해커, 블랙해커, 그레이해커 이 3종류가 있는데

보통은 차이가 있다는건 알겠는데 정확히는 잘 모르고

그냥 윤리적이나 불법적이냐 정도로 구분을 짓는 경우가 많은것 같습니다.

 

 

 

뭔가 다르다고는 인지를 하고 있기때문인지 모르겠지만

완전히 전혀 다른거라고 생각을 하는 사람들도 있는데 해킹에 관심있는 분들은 여러분야 중에서

블랙해커라는게 본인이 생각하는것과 맞다고 생각을 하는겨우 많습니다.

그렇다보니 선량한 학생(?)들이 잘못된 길로 빠져가는 분들도 있어서 이런 개념에 대해서

쉽게 이해할수 있도록 설명을 해보려고 포스팅을 시작하게 됐죠.

 

 

우선 차이가 전혀 없다고 할수는 없지만 그 차이는 기술적인 측면 보다는

마인드??생각??적인 측면이라고 할수가 있을것 같습니다.

우선 가장 흔하게 들어보는 화이트해커는 누구나 아는것처럼 윤리적인 목적을 가지고

보안에 위협이 될수 있는 여러가지 요소들로부터 정보시스템을 방어하는 전문가들인데

이와 반대로 블랙해커같은 경우는 악의적인 목적을 가지고

보안에 위협이 될수 있을만한 여러가지 요소들을 찾아내서 허가없이 상태방 시스템에 침투를 하거나

시스템을 파괴하고 개인정보 유출이나 데이터유출을 하는 범법자 인겁니다.

 

 

 

그레이해커는 별로 중요하진 않은데 허가없이 상대방 시스템에 침투를 하기는 하지만

악의적인 목적없이 보안에 위협이 될수있을만한 취약점을 찾아 학습이나

자기개발 목적으로 이용을 하거나 아니면 상업적으로 활용을 하기도 하는

약간 어중간한 위치에 있는 해커라고 할수가 있을것 같습니다.

어느 분야든 목적에 차이가 있을뿐 내용적인 부분이 크기 다르지 않다는것을

말에서 알수가 있듯이 실제로 가지고 있는 기술력에도 별반 차이가 없다고 볼수 있습니다.

 

 

블랙해커가 해킹을 하는 사람이라고 인식이 돼 있기 때문에

해킹기법에 관심이 있는 많은 학생들이 이런 범법자에 해당하는 분야에 관심을 가지는 경우가 있는데

어차피 화이트해커든 그레이해커든 블랙해커와 똑같이 해킹기법을 익히고 활용하기 때문에

단순 기술적인 측면으로만 보면 전혀 다를게 없다고 볼수가 있는거죠.

다만 이 해킹기법을 이용해서 어떤 목적으로 사용을 하느냐에 따라서 그냥 불리는 명칭만 달라지는거기 때문에

해킹기법에 관심이 있다고 하더라도 범죄자가 될게 아니라면 당연히 윤리적으로 사용하는게 맞습니다.

 

 

 

별로 개념 파악하는게 어려운것도 아니고 조금만 공부를 해보거나 직접 접해봤다면

쉽게 이해할수가 있는 부분이기도 한데 제대로 경험할 기회가 없는 어린 학생들이나

전혀 관련이 없는 분야에서 활동했던 분들같은 경우는

자칫 잘못하면 큰 실수를 저질수도 있는 위험한 부분이기도 합니다.

요즘에는 이런 개인정보에 대한 중요성도 많이 각인되고 있고 법안도 조금씩 강화되고 있기 때문에

사소한 실수 하나때문에 엄청난 일이 발생할수도 있다는 점은 항상 가지고 있어야 하고

해킹공부를 하더라도 이를 허가없이 악용하면 그 순간 본인은 블랙해커가 되는거죠.

 

 

누구나 어렸을때에 컴퓨터에 흥미를 가지고 관심을 가지다 보면 해킹이라는 기술에 관심을 갖게 되는데

배우는거야 누구나 할수 있는거고 필요한 공부과목이 무엇인지만 알고 있다면

혼자서도 얼마든지 기술력을 키울수가 있는데 간혹 이미 개발된 해킹 툴을 이용해서 장난이겠지만

친구들이나 아는 사람이나 아니면 정말로 범죄가 될수 있을만한 짓을 모르는 사람들에게 사용을 하기도 하는데

이런것도 블랙해커로 간주되고 피해가 있을시에는 법적인 처벌까지도 받을수 있기 때문에 조심해야 하죠.

 

 

 

그렇다면 이런 상대방 시스템을 침투하고 공격할수 있는 해킹기법을

화이트해커는 어떤식으로 활용하는지를 설명해 드리면 목적자체가 보안에 위협이 될수 있는 여러가지 요소로부터

컴퓨터시스템을 방어하는 역할이기 때문에 우선 이런 위험요소로부터 방어를 하기 위해서는

위헙요소가 뭐가있고 어떻게 침투를 하고 어떻게 피해를 입게 되는지에 대해서 분석합니다.

여기까지만을 보면 블랙해커와 전혀 다를게 없는데 이렇게 침투하고 분석에서 끝나는게 아니라

이에 대한 대응책을 마련하련하고 보안 업데이트를 하게 되는거죠.

 

 

하지만 이런 개념자체가 잘 잡혀있지 않고 생소한 분들은 그냥 보안이라는거에 초점을 맞추다보니

해킹기법을 익힌다고는 별로 생각을 하지 못하는 경우가 많이 있다보니

블랙해커에 더 큰 관심을 갖는 분들이 많이 있는데 상당히 위험한 생각인거죠.

해킹보다 보안이 더 어려운 이유도 이런것 때문인데 해킹이야 그냥 취약점을 찾아내거나

아니면 컴퓨터가 기계인점을 이용해서 악성코드를 이용해 정해진 형식 없이

다양한 방법으로 하기 때문에 이를 일일이 분석하고 여러가지 경우의 수를 감안해서

보안 대책을 마련해야 하기 때문입니다.

 

 

 

그렇기 때문에 개인적인 생각이지만 블랙해커보다는 화이트해커가 훨씬더 능력이 뛰어나다고 생각이 되고

해킹기법도 좀더 잘 다루고 기술력도 뛰어나야지만 제대로 활동을 할수가 있지 않을까 싶네요.

요즘에도 해킹이라는 기술에 많은 관심을 갖는 친구들이 있기는 하지만

말 그대로 그냥 해킹을 하는거에 관심을 갖는 친구들도 상당히 많이 있어 이런 사람들이

장난이지만 자기도 모르게 범죄를 저지르게 되는 경우가 허다한 경우가 많은데

이런 개념을 좀만 더 잘 이해하고 파악하고 있다고 한다면 단순 해킹을 하는거에서 그치는게 아니라

이런 공격에 대한 대응을 할수 있는 방안까지도 생각해볼수 있다고 한다면

훨씬 더 재미있게 공부를 하면서 사회에서 인정받는 전문가가 될수도 있지 않을까 싶습니다.

 

 

결론적으로 글을 쓰게 된 이유가 블랙해커라고해서 해킹기법을 잘 다루고 하는게 아니라는걸 알려드려고 싶었던 거고

기왕에 이런 컴퓨터기술을 익히려고 마음을 먹고 있다고 한다면 어렵게 익힌 해킹기술을

자신이 범법자가 되는데 활용하지 말고 사회적으로 인정받고 전문가로 활동할수 있도록 활용한다면

좀더 보람있고 재미있고 더욱더 깊이있게 공부를 할수 있는 목표가 생길수도 있을거기 때문에

기술적인 부분에 관심이 있는거라면 화이트해커로 목표로 두시는게 좋을겁니다.

 

 

 

이유가 어찌됐든 단순 해킹 프로그램을 사용하는 행위는 제대로된 해커라고 할수 없고

직접 해킹툴을 만들수 있을정도의 기술력을 키워나가야 하는거고

직접 알려지지 않은 취약점을 찾아내서 해킹침투가 가능한 새로운 루트를 찾아내는 기술력을 익혀야 합니다.

그래야 블랙해커가 된다고해도 제대로 활동할수가 있는거고 보안을 하려고 해도

이런 기술력이 있어야지만 제대로된 대응책을 세울수가 있는거기 때문에

블랙해커랍시고 이미 웹상에서 쉽게 구할수 있는 해킹툴같은 경우는 사용할줄 알아봤자 웃음거리밖에 안되는거죠.

 

 

해커처럼 해킹기법을 익히기 위해서는 사전에 취약점을 분석할수 있는 능력이 필요하고

취약점을 분석하려면 컴퓨터시스템이 어떻게 구축되고 어떤식으로 구동되는지 알고 있어야 하기 때문에

기초가 되는 지식이 프로그래밍, 운영체제, 네트워크, 데이터베이스가 됩니다.

이런 기초지식을 토대로 각종 취약점 분석과 이를 이용할수 있는 각종 해킹기법과 이에대한 대응방법을 익히게 되는데

그렇다보니 제대로 공부를 하려고 한다면 워낙에 많은 분야에 대한 지식이 필요하기 때문에

시간적으로도 많은 시간이 필요하고 상당히 많은 노력도 필요하죠.

 

 

 

어차피 우선은 기초 과목들부터 차근차근 접해나가야 하는건데 이런 기초가 되는 부분은

아무런 지식이 없어도 누구나 쉽게 공부할수가 있기 때문에 기술력을 키워 나가시면 될것 같습니다.

간혹 아무것도 모르는 상태에서 할수 있는지 고민을 하는 친구들도 있는데 전혀 상관이 없으니

공부를 시작해 보려고 하시는 분들이 있다면 아래 이미지 링크를 통해 관련 카페로 연결해 드릴테니

공부자료가 필요한 분들은 이용해보시면 기초적인 기술력을 키우는데 도움이 될겁니다.


IT분야 중 가장 중요한게 IT정보보안 선정

IT분야 중 가장 중요한게 IT정보보안 선정



 

불과 얼마 전까지만 해도 기업에서는 업무에 대한 효울성을 높이기 위해서

문제가 될 요지가 있기는 하지만 정보보안은 크게 생각하지 않았고

그에따른 투자나 지원도 많이 었었던게 사실이었습니다.

하지만 이제는 IT분야에서 가장 중요하다고 평가하고 이제는 최우선으로 고려해야하는

사항으로 IT정보보안을 꼽고있는 추세이기 때문에 앞으로 많은 발전이 있을걸로 보이네요.

 

 

 

이번에 테크프로리서치에서 C레벨 임원인 최고경영자CEO와 최고정보책임자인 CIO와

최고정보보호책임자인CISO등과 IT담당자들을 대상으로

앞으로 IT분야에 대한 전망을 조사한 결과 IT시스템에 대한 정보보안성 향상을

가장 최우선 기술적 고려사항으로 꼽았습니다.

본래에는 업무의 효율성을 높이기 위한 사항이 가장 높에 평가가 됐었지만 이번에는

두번째로 꼽히게 됐고 프로젝트 관리가 세번째로 선정이 됐습니다.

 

 

이번에 조사한 내용을 보면 앞으로 3년 이후 IT부서가 가장 중요하게 봐야할 분야에 대한 항목중에서도

IT정보보안이 가장 중요하다고 답했을 정도로 많은 주목을 받고 있는데

각종 개인정보유출이나 여러가지 해킹공격과 새로운 취약점 버그가 등장하면서

잦은 보안사고로 인해서 각 기업들이 많은 관심을 가질수밖에 없는 분야가 되버린 거죠.

역시 직접 경험을 하고 사고가 터져야 지만 그 문제에 대한 심각성을 깨닫는것 같아서

어쩔수 없구나 라는 생각을 버릴수가 없기도 하네요.

 

 

 

해마다 정보보안이 중요하고 이슈가 되고있다고는 얘기를 많이 하지만

실제 기업에서는 움직이는 동향을 보면 그렇게 중요하다고 생각하지 않는것처럼 보일만큼

개선이 되는 부분이 없었고 국내 기업같은 경우는 더더욱이나 심각했었죠.

하지만 이런 문제가 계속해서 일어나고 여러가지 개인정보에 대한 개정사항으로 인해서

이제는 각 기업들이 IT분야중에서 정보보안을 가장 중요하게 꼽고 있는것 같습니다.

 

 

아직까지는 전문인력이 많이 부족한 상황이기 때문에 많은 학생들이 IT정보보안 쪽으로 목표를 잡고

취업준비를 하기도 했는데 기업에서는 그렇게 크게 중요하게 생각치 않은 경우가 많아서

취업문이나 대우적인 부분에 있어서는 생각한것 만큼 좋지도 못했던게 사실이지만

이제는 이런 부분이 많이 개선이 될것 같고 사회적인 인지도나 근무환경이나 조건적인 면에서도

많은 개선이 있을것 같아 현재 IT분야로 진출을 목표로 하고있는 여러 사람들에게는 희소식이지 않을까 싶네요.

 

 

 

여러가지 IT분야중에서 가장 준비할게 많이 있고 익혀야 하는 기술이 많이 있는 분야가

IT정보보안인데 많은 노력에 비해서는 생각보다 좋은 대우를 받지 못했던것도 있었는데

이제는 그만큼 노력한 부분에 대한 대가를 받을수 있게된것 같기도 하고

해마다 사회적으로 인정을 받고 있는것 같아 정보보안전문가에게 필수적으로 필요한

책임감이나 자부심을 갖는데도 많은 도움이 될수 있을것 같네요.

 

 

보통 IT정보보안 분야를 보면 생각보다 업무파트가 다양하게 나눠져 있기 때문에

개개인마다 진출하고자 하는 방향에 따라서 요구되는 기술력에 차이가 있어서

준비과정이나 방법에도 많은 차이가 생기기 때문에 전반적인 분야에 대해서 정확히 인지하고

필요한 기술에 대해서 기초부터 체계적으로 공부를 잘 해 나가야 하는데

이런 계획을 잡는게 생각보다 어려움이 많이 있기 때문에 대부분 전공생들 조차도

자신이 준비하기 어렵다고 생각을 하는 경우가 많이 있기도 합니다.

 

 

 

이제 사회적으로 어느정도 중요하다고 평가가 되고있고 개선되는 부분도 많이 있을것으로 보이는데

이제는 이것보다는 현재 진행되는 교육시스템에 대해서도 많은 개선이 필요할것도 같네요.

아직까지는 iT정보보안 쪽으로 진출을 하기 위한 기술을 익히기 위해서는

사전에 공부해야하는 과목들이 많이 있지만 대부분의 사람들이 학업으로 배울수가 없어서

개인적으로 준비를 하고있기 때문에 방향을 제대로 잡지 못하고 있다고 한다면

준비를 하고싶어도 계획을 잡기가 막막할수밖에 없는거죠.

 

 

보통 이것저것 검색을 해보면 프로그래밍언어가 기초라느니 서버나 네트워크를 공부해야한다느니

여러가지 용어들을 들어볼수가 있긴 하겠지만 프로그래밍 언어도 종류가 많고

서버또한 마찬가지로 딱 정해져 있는게 아니기 때문에 이런 용어를 아는게 중요한게 아니죠.

IT정보보안 분야마다 담당하는 업무에 대해서 알아보고 업무수행능력을 키우기 위한 기술력을 익혀나가야 하기 때문에

이와 관련된 과목에 대해서 공부를 해야하는거죠.

 

 

 

그렇기때문에 프로그래밍언어나 서버나 네트워크에 대해서 공부를 해야하는건 맞지만

IT정보보안 분야중에서 어떤 파트로 진출을 할 생각인지에 따라서 준비해야하는

과목에는 차이가 생기게 되는거기 때문에 아직 분야선정을 제대로 하지 못하고 있거나

개념이 제대로 잡혀 있지 않은 분들은 그냥 기초가 되는 공통적인 부분에 대해서 조금씩 해보시는것도 좋습니다.

IT분야가 다양하게 나눠져 있기는 하지만 어차피 공통적으로 알고 있어야 하는 기본 개념은

동일하기 때문에 처음에 계획을 잡는게 어렵다고 한다면 가장 기초가 되는 부분을 위주로 접해가면 됩니다.

 

 

이런 기초적인 과목에 대해서는 어렵지 않게 공부를 해볼수가 있기는 하지만

컴퓨터란게 접해보면 알겠지만 단순하게 명령어들을 외운다고해서 잘할수 있는건 아니니

동작원리나 개념에 대해서 잘 이해할수 있도록 공부를 하는게 중요하긴 합니다.

아직 아무런 경험없이 IT분야에 대해서 개념을 잡는것 자체가 모순이기 때문에 아무것도 접해보지 못한 상황이라면

모를수밖에 없으니 지금 당장은 정보보안이 뭐고 어떤 분야가 있고 어떻게 준비를 해야하는지를 알아보는것도

중요하긴 하지만 기초가 되는 기본과목들을 하나씩 공부를 해보면서 개념을 잡아가는게 중요합니다.

 

 

 

이런 기초가 되는 과목들에 대해서는 공부할수 있는 자료들도 어렵지 않게 구할수 있기 때문에

혼자서도 충분히 이해가 되거나 어렵지 않게 할수 있을것 같다 싶으면 기초부터 하나씩

공부를 해보는것도 좋고 아니면 좀 어렵다 싶으면 도움을 받으면서 공부를 하는게 시기적으로나 이점이 많습니다.

정보보안 쪽이 IT분야 중에서도 워낙에 많은 기술을 요구하기 때문에 기초적인 공부를 하는데

너무 많은 시간을 투자하면 끝도 없이 해야할거기 때문에 본인 상황에 맞춰 계획을 잘 세워서 준비를해야합니다.

아래 이미지 링크를 통해서 관련 공부를 할수 있는 카페로 연결해 드릴테니

혹시 기초지식이 필요한 분들은 이용해 보세요.

 

 

아니면 본격적으로 취업준비를 해야하는 시기라고 한다면 많은 시간을 투자하기에는 부담이 있을수도 있기 때문에

개념을 잡는게 어려운 분들은 전문기관을 통해서 기초부터 체계적으로 기술력을 키워 나가는것도 좋은데

여러 IT분야들에 맞춰 취업에 필요한 준비를 하수 있기도 하고 정보보안 파트에 맞춰서도 기본적인 기술력부터

취업준비까지 수월하게 할수가 있기 때문에 기시적으로 많은 도움이 될수가 있으니

아무런 기초지식이 없는 상황이라 할지라도 생각보다 수월하게 취업준비를 잘 해 나갈수가 있습니다.

 

 


< IT분야 정보보안 취업 준비과정>

 

 


 

오랜만에 이런 좋은 소식이 들려서 포스팅을 작성하게 됐는데

앞으로도 이런 좋은 소식들이 자주 들렸으면 좋겠고 지금도 많은 사람들이

각종 해킹사건들이 이슈가 되고 개인정보 유출 사건들이 빈번히 일어나면서

IT분야나 정보보안에 대해서 많은 관심을 갖게 되는 경우가 많이 있는데

아직까지는 생소한 부분이 많이 있기도 하고 알아보기가 어려운 파트이기 때문에

파악하는게 힘든점이 많이 있는데개인적으로 궁금한것들에 대해서 물어보셔도

자세하게 설명해 드릴수 있으니  관심을 가지고 있는 분들이라면 편하게 물어보세요.

 


 

이제는 전 세계적으로 IT전문인력 양성에 많은 노력을 하고 있다보니

국내에서도 이런 분위기에 맞춰서 상당히 중요한 분야로 생각하고 많은 지원을 하고 있지만

실질적으로 표면적으로 들어나 보이는건 솔직히 많이 없는것 같기도 합니다.

그래도 앞으로 많은 개선이 있을거라는 희망을 가지고 있기는 한데 예전보다는

많은 사람들이 관심을 가지고 있는것 같기도 해서 발전 가능성도 많고 전망도 밝은 분야가 될것 같네요.

 


 

아직 교육시스템을 열악한 부분이 많아 교육기관을 이용하는데도 제약이 많다보니

개인적인 공부를 하는 사람들도 많이 있는데 어차피 IT분야는 전체적으로

정보보안이든 어디든 개인적인 자기개발이 가장 중요하기 때문에

노력만 많이 한다면 누구든지 좋은 기술력을 갖출수가 있으니 열심히 하시길 바랍니다.^^


bash 취약점 (shellshock) 업데이트 버전 확인

bash 취약점 (shellshock) 업데이트 버전 확인


패치가 발표된 후 취약점이 발표되었는데, 

패치가 불완전하다는 것이 그 후에 밝혀지는 바람에 또다시 패치가 발표되고... 

아무튼 지금 상황이 좀 혼란스럽습니다. 


데비안, 우분투 사용자는 

    apt-get update && apt-get upgrade 

또는 

    apt-get update && apt-get install --only-upgrade bash 

명령을 사용하시고, 


레드햇, CentOS, Fedora 사용자는 

    yum -y update bash 

명령을 사용하여 업데이트하시기 바랍니다. 


어떤 상황에서도 직접 컴파일은 비추입니다. 

bash는 매우 중요한 시스템 패키지이므로 반드시 공식 미러에서 받으셔야 합니다. 

만약 사용중인 미러에 최신 패키지가 존재하지 않는다면 미러를 바꾸세요. 미국 미러도 꽤 빠릅니다 ^^ 


이 시각 현재 모든 패치가 완료된 것으로 알려진 버전은 아래와 같습니다. 


우분투 14.04 LTS: 4.3-7ubuntu1.4 

우분투 12.04 LTS: 4.2-2ubuntu2.5 

우분투 10.04 LTS: 4.1-2ubuntu3.4 


만약 우분투 패키지가 다시 업데이트될 경우, 이 시각 이후에는 아래 링크의 버전 목록을 참조하시면 됩니다. 

http://packages.ubuntu.com/search?keywords=bash 


CentOS 7.x: 4.2.45-5.el7_0.4 

CentOS 6.x: 4.1.2-15.el6_5.2 

CentOS 5.x: 3.2-33.el5_10.4 


만약 CentOS가 다시 업데이트될 경우, 아래 링크의 맨 아래 CESA 2014:1306 관련 부분을 참조하시면 됩니다. 

http://lists.centos.org/pipermail/centos-announce/2014-September/thread.html 


위에 언급한 것보다 오래된 버전은 이미 오래 전에 지원이 중단되었으므로 업그레이드만이 살 길입니다. 

예: CentOS 3.x, 4.x, 우분투 8.x, 9.x, 10.10, 11.x, 12.10, 13.x 등 

정 급하면 최신버전 컴파일해서 쓰세요. 그러나 결과는 책임 못짐. 


이제 가장 큰 문제는 공유기, 모바일 기기, 기타 네트워크 장비 등 

유닉스계열 OS를 사용하지만 업데이트가 곤란한 기기들이죠. 

집집마다 공유기 줄줄이 털리게 생겼음. 이거 제조사에서 펌웨어 업데이트도 잘 안해주는데... 쩝 ㅠㅠ



http/https 혼합 환경에서 세션 보안 강화하기

http/https 혼합 환경에서 세션 보안 강화하기


간만에 올리는 보안팁텍입니다. 


요즘 로그인 페이지, 회원가입 페이지 등 개인정보가 오가는 곳에는 

https (SSL 또는 TLS) 보안서버를 사용하는 것은 상식이 되었죠? 

(음 그러나 현실은... 상식이 되었다고 제발 믿고 싶습니다 ㅠㅠ) 


구글이나 트위터 등의 해외 사이트들은 아예 모든 페이지에 https를 일괄 적용하곤 합니다. 

그러나 국내에서는 https를 적용한 사이트라도 모든 페이지에 일괄 적용하기보다는 

법에서 요구하는 최소한 - 로그인과 회원가입 페이지 - 에만 적용하는 경우가 많습니다. 

여전히 https에 대한 막연한 두려움과 미신이 많기 때문인데요... 


막연한 두려움과 미신 참고: 

http://www.phpschool.com/link/tipntech/77347 

http://www.phpschool.com/link/tipntech/77348 


------------------------------------------------------------------------------------------------------- 


그런데 일부 페이지에만 https를 적용할 경우 치명적인 문제가 한 가지 발생합니다. 

로그인에 사용하는 아이디와 비번은 암호화 전송이 되지만, 

로그인 상태를 표시하기 위한 세션 쿠키는 다른 페이지에서 무방비 상태로 노출된다는 거죠. 


세션 쿠키의 값을 알아낼 수 있다면 아이디와 비번 따위는 훔칠 필요도 없습니다. 

세션 쿠키를 사용하면 자기도 님의 아이디로 로그인된 상태로 만들 수 있으니까요. 

일단 이렇게 로그인 상태로 만들면 회원정보도 마음대로 볼 수 있고 

남의 글이나 댓글을 지울 수도 있고, 심지어 남의 이름으로 물건을 살 수도 있죠. 

이건 뭐, https를 적용한 보람이 전혀 없습니다. 


(회원정보 열람 전에 비번을 다시 입력하도록 하면 어느 정도는 피해를 막을 수 있겠죠? 

그러나 모든 페이지에서 매번 비번을 묻지 않는 한 100% 막을 수는 없습니다.) 


PHP에서는 세션을 시작할 때 $secure 옵션을 사용하면 

https 상태에서만 세션 쿠키가 전송되도록 강제할 수 있습니다. 

그러나 이렇게 하면 https를 적용하지 않은 다른 페이지에서는 로그인이 풀려버리죠. 

그래서 대부분의 사이트들은 세션의 $secure 옵션을 사용하기가 힘듭니다. 


------------------------------------------------------------------------------------------------------- 


오늘은 http와 https를 혼합하여 사용하는 환경에서도 

세션 쿠키 도난의 위험을 최대한 줄이는 방법을 소개해 보겠습니다. 


문제의 핵심은 공격자가 http 상태에서 훔친 세션 쿠키를 

https 상태에서도 마음놓고 사용할 수 있다는 것입니다. 

따라서 우리의 목적은 http 상태에서 세션 쿠키를 훔치더라도 

https 상태에서는 무용지물이 되도록 하는 것입니다. 


------------------------------------------------------------------------------------------------------- 


1. 일단 그냥 세션을 시작합니다. $secure 옵션은 사용하지 않습니다. 

    PHP에서는 보통 PHPSESSID라는 이름의 세션 쿠키를 사용합니다. 


2. 로그인하는 순간에는 https 상태이겠죠? 이 때 쿠키를 하나 더 구워줍니다. 

    이 쿠키를 편의상 "보안쿠키"라고 부르고, 쿠키 이름은 SSLSESSID라고 하겠습니다. 

    랜덤으로 생성한 값을 이 쿠키에 넣고, 같은 값을 세션에도 하나 저장해 둡니다. 

    중요한 건, SSLSESSID 쿠키에는 $secure 옵션을 사용해야 한다는 점입니다. 

    당연히 이 쿠키는 https 상태일 때만 전송되겠죠? 

    다른 방법으로 쿠키를 훔치는 것을 막기 위해 $httponly 옵션도 넣어주면 좋습니다. 


3. 사용자를 http 페이지로 돌려보냅니다. 

    이 때는 세션 쿠키(PHPSESSID)만 전송되고, 보안쿠키는 전송되지 않습니다. 

    따라서 누가 세션 쿠키를 훔쳐가도 알아차릴 방법이 없습니다. 

    공격자가 실제 사용자와 같은 와이파이를 사용하고 있다면 IP도 당연히 같겠고, 

    세션 쿠키를 훔칠 정도면 User-Agent 같은 것도 얼마든지 훔쳐서 베낄 수 있을 테니까요. 

    이건 http의 한계입니다. 어쩔 수 없습니다. 


4. 반면, 사용자가 다시 https 페이지를 방문한다면 어떻게 될까요? 

    정상적인 사용자라면 세션 쿠키(PHPSESSID)와 보안쿠키(SSLSESSID)가 함께 전송되겠죠. 

    그러나 공격자는 세션 쿠키는 훔칠 수 있어도 보안쿠키는 훔칠 수 없습니다. 

    따라서 PHPSESSID만 전송하거나, SSLSESSID의 값을 짐작해야 합니다. 

    그런데 SSLSESSID의 값은 랜덤으로 생성했으므로 짐작하기가 매우 어렵습니다. 


5. https 페이지를 방문할 경우 서버에서 SSLSESSID 쿠키를 체크합니다. 


5-1. 만약 SSLSESSID 쿠키가 있다면 세션에 저장해 두었던 값과 비교합니다. 

      일치하면 정상적인 사용자입니다. 

      일치하지 않는다면 공격자입니다. 세션을 폭파해 버려야 합니다. 콰쾅. 


5-2. 만약 SSLSESSID 쿠키가 없다면 세션에 저장해 둔 값이 있는지 확인합니다. 

      세션에 저장해 둔 값이 없다면 2단계를 거치지 않았다는 뜻이므로 

      2단계와 같이 보안쿠키를 새로 발급해 주면 됩니다. 

      반면, 세션에 저장해 둔 값이 있는데도 보안쿠키를 전송하지 않았다면 

      (즉, 분명 아까 보안쿠키를 구워줬는데 어딘가에 흘리고 왔다면) 

      공격자가 SSLSESSID의 값을 짐작하지 못해서 비워둔 것이겠죠? 

      당연히 세션을 폭파해 버려야 합니다. 쿠콰쾅. 


6. 위와 같은 방법을 사용하면 공격자가 http 상태에서 세션 쿠키를 훔치더라도 

    https 페이지를 방문하는 순간 세션이 폭파되어 버리므로 

    훔친 세션 쿠키는 무용지물이 됩니다. 

    반면, 정상적인 사용자들이 웹사이트를 이용하는 데는 아무 지장이 없습니다. 


7. 단, 로그인 후에 단 한번도 https 페이지를 방문하지 않는다면 아무 소용이 없겠죠? 

    위의 방법으로 최대한의 효과를 얻으려면 

    종종 https 페이지를 방문하도록 해주어야 합니다. 

    로그인, 회원가입, 회원정보 열람 및 수정, 아이디/비번찾기, 결제페이지는 물론이고 

    가끔 막 엉뚱한 것을 https 페이지로 만들어서 공격자를 놀려주세요. 

    예를 들어 게시판에서 글 읽을 때는 평범한 http이지만 

    글 쓰는 폼의 action 주소는 https로 해둔다거나... 

    그러면 만약 세션 쿠키를 훔치더라도 다른 사람을 사칭해서 글을 쓰려고 하는 순간 

    세션 폭파 쿠콰콰콰! 


8. 그런데 대부분의 웹사이트들은 http로 접속하든 https로 접속하든 내용이 똑같습니다. 

    그래서 아주 조심스러운 공격자라면 https 링크를 http로 바꾸어 접속함으로써 

    세션이 폭파되는 것을 피할 수 있어요. 

    이런 꼼수를 막기 위해, https로 접속해야 하는 페이지에 http로 접속한 경우 

    아무 것도 보여주지 말고 곧바로 Location: 헤더를 사용해서 https로 넘겨주세요. 

    만약 공격자였다면 당연히 세션 폭파 쿠콰콰콰! 


------------------------------------------------------------------------------------------------------- 


9. 방법만 알려드리고 예제 소스가 없으면 그건 제 스타일이 아니죠? 

    위에서 언급한 모든 작업을 한 번에 해주는 함수입니다. 

    그 밖에도 3분마다 쿠키값을 바꿔주고 

    세션 관련 php.ini 속성들을 자동으로 조절해 주는 등 

    쓸만한 기능들이 좀 있어요. 

    session_start() 대신 쓰시면 됩니다. 


/** 

 * 합리적인 기본값으로 세션을 시작하는 함수 

 * 

 * @param int $lifetime = 0 

 * @param string $path = '/' 

 * @param string $domain = null 

 * @param bool $secure = false 

 * @param bool $httponly = true 

 * @return void 

 */ 

function session_start_better($lifetime = 0, $path = '/', $domain = null, $secure = false, $httponly = true) 

    // 세션 관련 php.ini 설정 조절 

    ini_set('session.gc_maxlifetime', max($lifetime, 86400)); 

    ini_set('session.hash_function', 1); 

    ini_set('session.use_cookies', 1); 

    ini_set('session.use_only_cookies', 1); 

    ini_set('session.use_strict_mode', 1); 

    if (defined('PHP_OS') && !strncmp(PHP_OS, 'Linux', 5)) 

    { 

        ini_set('session.entropy_file', '/dev/urandom'); 

        ini_set('session.entropy_length', 20); 

    } 

    

    // 실제로 세션을 시작 

    session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly); 

    session_start(); 

    

    // HTTPS인 경우 보안쿠키 체크 

    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') 

    { 

        // 보안쿠키를 처음 발급하는 경우 

        if (!isset($_SESSION['SSLSESSID'])) 

        { 

            $_SESSION['SSLSESSID'] = sha1(pack('V*', rand(), rand(), rand(), mt_rand(), mt_rand())); 

            setcookie('SSLSESSID', $_SESSION['SSLSESSID'], $lifetime, $path, $domain, true, true); 

            if (isset($_COOKIE[session_name()])) session_regenerate_id(); 

        } 

        // 보안쿠키를 발급했는데 제대로 돌아오지 않은 경우 공격자로 간주함 

        elseif (!isset($_COOKIE['SSLSESSID']) || $_COOKIE['SSLSESSID'] !== $_SESSION['SSLSESSID']) 

        { 

            $_SESSION = array(); 

            $sp = session_get_cookie_params(); 

            setcookie(session_name(), '', time() - 86400, $sp['path'], $sp['domain'], $sp['secure'], $sp['httponly']); 

            setcookie('SSLSESSID', '', time() - 86400, $sp['path'], $sp['domain'], true, true); 

            session_destroy(); 

        } 

        // 보안쿠키가 정상적으로 되돌아온 경우는 별도의 처리 불필요 

    } 

    

    // 세션을 발급한 지 3분이 경과하면 자동으로 쿠키값을 변경해줌 

    if (isset($_SESSION['AUTOREFRESH'])) 

    { 

        if ($_SESSION['AUTOREFRESH'] < time() - 180) 

        { 

            $_SESSION['AUTOREFRESH'] = time(); 

            session_regenerate_id(); 

        } 

    } 

    else 

    { 

        $_SESSION['AUTOREFRESH'] = time(); 

    } 


------------------------------------------------------------------------------------------------------- 


10. 소스가 너무 길어지지 않도록 하기 위해 몇 가지를 간단하게 처리하고 넘어갔는데, 

    실제로 쓰실 때는 아래의 두 군데를 적당히 고쳐쓰셔도 됩니다. 

    

    - 로드밸런싱, CDN 등을 사용할 경우 $_SERVER['HTTPS']가 정확하지 않을 수 있음 

    - 보안쿠키 발급시 난수생성 알고리듬을 더욱 강력한 것으로 변경 

      참고: http://www.phpschool.com/link/tipntech/79087 


11. 물론 최고의 해결책은 웹사이트 전체에 https를 적용하고 

    HTTP Strict Transport Security (HSTS) 헤더를 사용하여 

    아예 브라우저들이 http 사이트로는 접속 시도조차 하지 않도록 만드는 것입니다.

서버스캔 (Snooping) 막기 스크립트 (.htaccess ip deny)

서버스캔 (Snooping) 막기 스크립트 (.htaccess ip deny)



http://kb.site5.com/security/how-to-automatically-block-someone-who-is-snooping-around-your-site/ 

.htaccess 에서, 임의로 서버스캔해가는 놈들 감지되면, block.php 으로 보내고, 


http://kb.site5.com/security/how-to-automatically-block-someone-using-a-php-script/ 

이 스크립트에서, .htaccess 에, 아이피 deny 하는거에요. 



별건 아닌데, 아주 유용하게 쓰일수 있습니다. 


보통 해커들이 스캔 프로그램 임의로 돌리면 , 500 에러서부터, 실제로 뚫리기도 하고요. 


작은 작업으로 큰 효과를 볼수 있는.... 


미국 호스팅 회사인데, 잘 정리해놓은듯 해서 올려봅니다.