해킹이란 단어를 처음 들었다면 굉장히 보안적인곳과 취약한 곳을 공격하는
행위로 생각되는 것이 일반적일 것입니다. 해킹이라는 첫 단어는
MIT의 교내 은어였던것이 대중으로 퍼진 것으로 원래 의미는 컴퓨터 매니아들이
컴퓨터에 대해서 속속들어 알아내며 일명 컴덕질을 하던 해커 컬쳐(Haker Culture)에서 유래하던 말입니다.
컴퓨터나 게임등 밑바닥까지 파고들면서 그 시스템에 대한 완벽한 이해나 주도권을 가지려는 문화를 가리키려고 쓰던 말로, 대중메체에서는 정보 보안을 뜯어내는 자극적인 이미지가 퍼지면서 보안해킹의 이미지로 굳어졌습니다.
해커라는 이름의 정의는 시간에 따라 크게 변화되어 왔습니다. 초기에는 그저 호기심이나 지적욕구의 바탕 위에
'컴퓨터와 컴퓨터간의 네트워크를 파괴하는 행위'라는 부정적인 의미를 갖게 되며 이것을 일명 크래킹이라 하였습니다.
크래킹이라는 뜻을 간단히 설명하자면 특정 목표에 피해를 주는 것을 목적으로 하고 있는 해킹을 뜻합니다.
현재 사용하고 있는 해킹이라는 의미는 대체적으로
'어떠한 의도에 상관없이 다른 네트워크에 침입하는 모든 행위'로서 타인의 컴퓨터 시스템에 엑세스 권한 없이
무단 침입하여 부당 행위를 하는 것을 뜻하며,
여기서 부당 행위란 불법적인 시스템 사용, 불법적인 자료 열람,유출 및 변조 등을 뜻합니다.
반면 긍정적 의미로는 '각종 정보 체계의 보안 취약점을 미리 알아내고 보완하는 데에 필요한 행위'라는
뜻을 가지고 있습니다.
정보보안 분야에서 해킹은 프로그램 원 제작자가 걸어 놓은 프로그램 코드 락 알고리즘을 풀어서
프로그램의 소스를 알아내거나 프로그램 소스를 변경해서 자기 입맛에 맞게 바꾸는 모든 행위를 뜻합니다.
즉, 프로그램 자체를 제작자의 의도와는 상당히 다르게 바꾸는 것이 바로 해킹이며,
그것을 나쁘게 바꾸는 것을 바로 크레킹이라고 합니다.
해킹 자체는 범죄분야에 해당하지 않지만 만약 불순한 의도로 악용한다면 바로 범죄가 됩니다.
다시 말해서 코드 락을 뚫어서 프로그램 소스를 확인하기만 하는 것은
범죄가 아닙니다. 여기서 몇몇 열성적인 프로그래머들은 자기가 사용하던 프로그램에서 버그가
발생할 시 프로그램 소스의 락을 풀어 소스를 확인한 뒤 다음 어디가 틀린지 다시 리포트를
써주기도 합니다. 물론 소스 코드 자체를 그대로 Copy 한다면 그것은 바로 불법입니다.
오픈 소스 프로그램에서는 소스 코드의 수정이 자유롭고, 상용 소프트웨어라도
사용 계약 내용을 준수하고 프로그램을 개조한다면 불법은 아닙니다.
하지만 계약사항 내에서 벗어난 행위 (모든 사람에게 공개, 락을 해제하는 크랙 개발)등
상대방에게 피해를 줄 목적으로 임의로 조작된 프로그램을 배포하는 등의 행위는
범죄에 해당됩니다.
해커의 분야로는 다음과 같이 정의 됩니다.
- 시스템 해킹: 대부분 포너블(Pwnable)이라고 부릅니다. 시스템의 취약점을 공격해 시스템을
장악하는 기술로 컴퓨터 구조에 대한 깊은 이해가 필요 - 리버스 엔지니어링: 리버싱이라고도 한다. 프로그램을 어셈블리어 레벨까지 분석해 프로그램의
조를 알아내고 심지어는 역으로 만들어 내기까지 하는 분야. 컴퓨터 바이러스를 분석하거나
제로 데이 공격을 하거나 막기 위해 필요한 기술 - 웹 해킹: 웹 사이트 자체를 해킹한다. HTML이나 자바스크립트 등으로 웹사이트를 디자인하는
프론트엔드와 Python 또는 C언어 등으로 웹과 서버나 프레임워크를 연결하는 벡엔드 모두를
하는 풀 스택 프로그래머가 되어야 합니다. - 포렌식: 하드디스크 등에서 삭제된 데이터를 복구해내는 기술입니다.
- 네트워크 해킹: 근거리 네트워크 및 모바일 네트워크 내의 취약점을 공격하는 기술입니다.
- 암호학: 암호에 대해 연구하는 학문으로 해킹에서도 매우 중요한 영역입니다.
데스크톱 컴퓨터내에서는 윈도우 계열이, 모바일영역 에서는 안드로이드가 특히 해커들에게는 주요 타겟이 됩니다.
하지만, 세간의 인식과는 달리 윈도우나 안드로이드가 취약점이 많은 것은 아닙니다.
애플사의 제품에서 보안 이슈가 없는 것은 바로 제약이 많기 때문입니다. 점유율이 낮아서 해커들에 관심이 없기
떄문이라는 썰도 있으나, 이 경우에는 미국에서 점유율이 상당히 높은 아이폰의 보안을 설명할 수 없습니다.
예를 들어서 맥에서는 다른 프로세스에 간섭하는 자체 명령어가 없습니다. 따라서 바이러스는 물론이고,
게임 트레이너나 AppLocal 같은 프로그램도 만들 수는 없습니다. 운영체제 자체를 뜯어내지 않는 이상은
존재 자체도 없는 명령어를 실행할 수는 없으니, 게다가 관리자 권한을 휙득하더라도 할 수 있는 일이 윈도우에
비해서는 굉장히 제한적인 요소에 해당됩니다. 아이폰만 하더라도 안드로이드에 비해서 취약점이
몇 배나 되지만 실제 피해 사례는 전무한 것도 바로 이 때문, 요약하자면 쉽게 뚫을 수 있지만 그 안에서
할 수 있는 행위는 거의 없다는 것 입니다.
그렇다고 아이폰만이 꼭 안전하다는 것이 아니고, 안드로이드가 무조건 위험하다는 것도 아닙니다.
오히려 안드로이드의 래퍼런스의 경우 오픈소스로 구성되어 있어 약점이 생겼을때
IOS개발자들은 일이 터지기 전까지 손 놓고 멍하니 macOS 팀에 가서 연속성에 관련한 이야기를 하면서
커피나 훌쩍이고 있을때 안드로이드는 안드로이드 커스텀 룸 개발자들과 구글 개발자들이
전세계에서 24시간 365일 자지도 않고 깨어 있는 오픈 소스 개발자들이 눈을 부릅뜨고 소스를 쳐다보고
있기에 해커의 취약점을 알아내기 전에 먼저 선제 차단을 할 가능성이 훨씬 높습니다.
해킹이라는 것은 취약점을 개발자들보다 먼저 알아내 그 점을
이용해 자신의 편의를 위해 악용하는 행위인데,
누군가는
'그럼 조금씩 조금씩 개발자들이 취약점을 고쳐 나가 취약점이 없어지면 해커들은 아무것도 못하는 거 아닌가?'
라고 물어볼 수 있습니다. 하지만 '희귀 문제(Regerssion Problem)이라는 복병이 있기 떄문에
업데이트가 될 때마다 기기마다 다른 오류가 뜨고 이전에 해결한 약점이 재발하는 문제가 지속적으로
OS,응용프로그램을 불문하고 발생하기에 해커들은 환호성을 지르며 해당 프로그램을 사용하는
기업들을 해킹한 뒤 협박을 통해서 돈을 뜯어내는 일을 영원히 할 수 있는 것입니다.
참고 자료
나무위키 - 해킹
https://namu.wiki/w/%ED%95%B4%ED%82%B9
'etc. > Wiki' 카테고리의 다른 글
[Wiki] 컴퓨터 바이러스 - 바이러스란 무엇인가 (0) | 2022.02.02 |
---|---|
[Wiki] 서비스 거부 공격 - Ddos(디도스) (0) | 2022.02.01 |