호그와트

실제의 해킹을 잘하고 싶다면...

영웅*^%&$ 2023. 11. 12. 07:19
728x90

지금부터 내가 하려는 얘기는 상당히 주관적인 얘기이다. 그래서 내 의견에 동의하지 않을 사람들도 꽤 많을 것이다. 다만, 그렇게 서로 다르다는 것은 어느 한 쪽의 얘기가 틀렸다기 보다는 그만큼 우리 분야가 다양하다는 것을 뜻할 뿐이라고 생각한다. 만약 내 의견에 동의하지 않고 그것을 감정적인 언어로 표현하지 않고 명백한 근거를 가지고 얘기할 수 있다면 얼마든지 댓글을 달아주시길 감히 부탁드린다. 나도 이번 기회에 한 수 배우고 싶으니까. 

가끔씩 해킹과 보안을 실전적으로 어떻게 잘할 수 있냐는 질문을 받기도 한다. 북한 해커들처럼 해킹으로 몇 조원의 암호화폐를 탈취하는 것도 아니고 러시아나 중국 해커들처럼 실제 사이버 전쟁을 치루지도 않는 나로써는 이런 질문에 답변하기 상당히 민망하다. 그리고 솔직히 말해서 데프콘에서 우승이나 결승에 갔다고 자신들이 1등 해커라고 생각하는 사람이 있다면, 이 사람 역시 조금은 민망해 해야할 필요가 있다. (물론, 당연히 이 말은 케이스 바이 케이스이다) 해킹과 보안을 어떻게 잘할 수 있냐고 학생이나 대학생 등이 물으면 나는 그가 취미반인지 아니면 정말로 이쪽 커리어로 갈 생각을 가지고 있는지도 역시 물어본다. 만약에 그가 순수한 취미반이라면, 나는 제퍼디와 ctf 방식을 주로 추천하는 편이다. 어차피 취미 반은 실제 해킹이 뭔지 전혀 알 필요도 없고 실질적인 의미조차도 알 필요가 없다. 그저 순수한 문제풀이의 재미를 극대화하면서 그걸 즐기면 사실 취미반으로써는 굉장히 잘한 것이라고 할 수 있다. 특히 제퍼디만큼 학생이나 대학생 정도 수준이 즐기기에 알맞은 것이 거의 없기 때문에 나는 그가 취미반이라고 한다면 주로 이쪽으로 많은 추천을 해준다. 근데 그가 만약에 정말 실전적인 것을 바라고 실제 해킹과 그리고 커리어를 이쪽으로 지향하는 것을 생각하고 있다면, 문제는 굉장히 많이 달라진다. 그럴 때 나는 조금 이상하지만, 상대방이 한국인이라고 한다면 주로 수학과 영어를 먼저 실력을 쌓는 것을 굉장히 추천한다. 물론, 여기서 수학과 영어는 당연히 한국의 학교에서 배우는 그런 수준이 아니다. 특정 사립학교에서 영어로 수업하듯이, 영어로 수업하는 걸 알아들을 수 있고 영어로 자료를 읽을 수 있고 영어로 말할 수 있는 등 가장 기본적인 당연한 그 스킬을 의미한다. 수학 역시 영어로 된것을 자유자재로 풀 수 있는 그러면서도 최상위 수준을 말한다. 그러면서 동시에 나는 프로그래밍을 굉장히 강조한다. 이 쪽 분야를 잘하면 잘할수록 프로그래밍 스킬은 굉장히 중요해진다. 아니 어떤 경우에는 거의 프로그래밍 스킬이 전부가 되기도 한다(물론 이런 경우는 많지 않다).    

가끔 몇몇 한국에 있는 어린 학생들이 시스템해킹이라고 불리는 가짜 해킹에 물들어서 본인들이 고수라고 착각하기도 한다.. 물론, 실제 시스템해킹과는 약간의 차이는 있긴 하지만, 한국에서 특히 많이 좋아하는 시스템해킹을 본다면, 사실 이는 조금 잘못된 것이기도 하다. 내가 잘못된 것이라고 말할 때에는 실제의 관점에서를 말하고 있다. 현대 보호 기법이 굉장히 수준이 높다는 것은 시스템 해킹을 조금이라도 해본 사람이라면 누구나 알 것이다. 당연히 소스코드를 제공해주고 특정 포트를 열어놓은 다음 친절하게 거기로 파이썬 공격을 때리라고 하는 그런 미친 시스템은 실제로는 존재하지 않는다. 더 재미있는 부분은 지금부터다. 시스템해킹 공격 자체는 사실 패치를 목적으로 한다(화이트해커의 관점에서). 그리고 한국에서 배우는 대부분의 시스템해킹은 소스코드 혹은 파일에 허점을 만들어서 그걸 파고드는 것을 기반으로 하고 있다. 자 한 번 머리를 굴려보자. 시스템해킹 자체가 소스코드를 바꾸어서 패치할 수 있는 것으로 귀결된다면, 결국에 그건 인공지능이 이미 훨배 잘하고 있다. '어 내가 GPT 써보니 시스템 해킹 쪽 익스플로잇 코드를 세밀하게 못 짜던데요?' ㅇㅇ 어느 정도는 맞는 말이다. 그리고 더 중요한 건 "그렇게 짤 필요가 없다" 이 관점이 정말로 중요하다. 시스템해킹은 소스코드를(혹은 파일을-결국엔 같은 얘기다) 억지로 비틀어서 주요한 취약점을 만든다. 그렇기에 소스코드를 애초에 취약한 부분이 없도록 짜면 그 시스템 해킹 식 억지 공격은 통하지 않게 된다. 바로 이게 인공지능이 훨배 잘하는 부분이다. 인공지능은 애초에 처음부터 그 소스코드의 보안을 애초부터 검토하여 해당 억지 시스템 가짜 공격이 통하지 않게끔 만들 수 있다. 그렇기에 결론적으로 소스코드를 기반으로 한 낮은 수준의 억지 시스템 해킹은 인공지능이 이미 훨배 잘한다고 보아도 무방하다. (다시 말하지만, 실제적인 의미에서이다) 그렇다면, 소스코드로 귀결되는 것이 아니라면? 이는 두가지를 의미한다. 아예 해당 취약점이 소스코드에서 기반하지 않은 다른 것에서 왔다거나(예를 들면, 네트워크라던지) 해당 취약점은 소스코드를 고치는 것만으로 해결되는 것이 아니라는 것이다. 뭐 사실은 동어 반복이긴 한데, 표현의 의미에서 이해해주시길 부탁드린다. 해당 취약점이 소스코드에서 기반하지 않은 다른 것이라면 이는 다른 지식을 요구하는 것이다. 예를 들어, 네트워크 공격에서 기반한 것이라면 그 지식이 필요하다. 그러므로 자연스럽게 이는 가짜 시스템 해킹 공격과는 별개가 된다. 또한, 소스코드를 고치는 것만으로 해결되는 것이 아니라면, 해당 가짜 시스템 해킹 공격이 만약에 통하여 증명하더라도 그것은 무의미하다는 것을 의미한다. 왜냐하면, 화이트해커의 관점에서 공격을 행하는 것은 결국엔 패치를 하고 방어를 단단히 하기 위함이기 때문이다. 화이트 해커는 돈을 훔치려고 혹은 정보를 탈취하려고 이 일을 하는 것이 아니다. 결국엔 패치를 하려고 혹은 시스템 방어를 다시 더 단단히 하려고 이 일을 한다. 위의 말을 주의하지 않고 읽으면 오독하기 굉장히 쉽기 때문에 다시 조금 더 간단히 말하자면, 한국에서 배우는 가짜 시스템해킹은 사실은 소스코드를 패치하는 것이거나 소스코드를 패치하지 않는 것이다. 소스코드를 패치하는 것은 가짜 익스플로잇을 짤 필요조차 없이 그냥 애초에 해당 프로그램을 고치면 끝이다. 소스코드를 패치하지 않는 것은 실제로는 다른 지식을 요구하는 것일 뿐이거나 공격을 증명한다고 해도 가짜 시스템해킹의 관점에서 의미를 가지지 못하게 된다. 왜냐하면, 실제로 그 공격은 해당 시스템을 패치하거나 더 방어를 단단히 하기 위함일 뿐이기 때문이다. 그러나 그걸 해낼 수 없다면 의미가 별로 없어진다.  그렇기에 이미 현업에서는 오래 전부터 이러한 가짜 시스템 해킹 공격에 대한 무용론이 오래 전부터 나왔다. 아마 한국에서 시스템 해킹을 조금이라도 해본 사람은 알겠지만, 이게 현업이랑은 전혀 관련이 없는 그냥 취미반이거나 심심풀이 땅콩같은 것임을 다 알고 있을 것이다. 그래서 나는 예전에 이를 묘기 당구라고 불렀다. 너무 오해하지 않으셨으면 좋겠는게 나도 이 묘기 당구를 좋아했었다. 그리고 당신이 만약에 이를 해봤다면, 나는 당신이 알고 있는 가장 어려운 문제 혹은 그에 준하는 문제들을 이미 풀어보았던 경험과 대회에서 우수한 실적을 낸 경험도 있었다는 것을 미리 말해주고 싶다. 이런 얘기를 하면, cve 라던지 exploit development이라던지 뭐 그런 얘기들이 또 나올 수 있다는 것을 안다. 충분히 일리가 있는 얘기들이다. 그렇지만, 한 단계 더 나아가보자면, 이러한 방식의 가짜 공격 기법들은 새로운 보호기법 앞에 무력화된다는 것을 뜻하기도 한다. 더 새로운 보호기법, 더 새로운 시스템 등은 기존의 가짜 공격 기법들을 무력화시킬 수 있다. 그리고 인공지능은 그러한 새로운 보호기법, 새로운 시스템의 해답이 될 수 있다. 이는 내가 연구하고 있는 주제이기에 겨우 블로그에 올릴 정도가 아니지만.. 

간단히 힌트만 몇 개 비둘기들에게 던져준다면, 이미 얼마 전에 개발자 포럼에서 GPT 4 turbo가 공개되었다. 기존 GPT 4의 성능에 무려 300페이지 분량을 한 번에 정보를 넣고 물어볼 수 있고 그 모든 정보들을 함께 분석할 수도 있다. 이미 GPT 4 의 성능이 날로 좋아지고 있다는 것은 누구나 알 것이다. 예전에 단순히 질문하고 답하고 하는 정도였다면, 이미 그 수준을 한참 뛰어넘었다. 
이쪽 분야를 연구하고 있는 사람들은 이러한 변화를 똑똑히 볼 필요가 있다. 왜냐하면, 기존의 가짜 공격들을 완전히 전복시켜버릴 수 있는 잠재력을 가지고 있기 때문이다.  

해킹 실습 사이트로 어떠한 것들이 좋냐는 추천해달라는 요청도 와서 한번에 한다면(구체적인 설명은 잘 안 하겠다), tryhackme 일단 내가 가장 애정하는 사이트이고 당근 hack the box 예술이다 그리고 picoCTF도 재밌는 문제들이 많고 Root me도 상당히 확장하면서 풀기에 아주 좋다. 그리고 내가 또 가장 좋아하는 사이트는 pwn.college이다. 여기서도 강의나 자료들이 꽤 잘되어 있기 때문에 강의나 자료들을 반복해서 들으면서 자료들도 계속 보면서 학습해나가길 아주 추천드린다. 일단 위의 사이트들은 기본기를 단련하기도 아주 좋고 고수 수준이 되서도 계속 재방문하여 여러 어려운 난이도들의 문제들을 풀어나가기에도 아주 최고로 좋다. 그러면서 점점 더 다른 사이트와 자료들도 확장해나가면 된다. 요새는 잘되어 있는 게 상당히 많기 때문에 위의 사이트들로 기본기가 쌓여있다면 어떤 사이트에 가서 실습해도 충분히 잘해낼 수 있을 것이다. 나도 그랬으니까. 

728x90

'호그와트' 카테고리의 다른 글

TwoArray.java  (0) 2023.11.14
어이 김 씨, 한국은 춥댜 ~  (0) 2023.11.14
치킨버거 맛 좀 볼래요?  (0) 2023.11.09
leetcode sumArray  (0) 2023.11.05
honki mode on  (0) 2023.11.02