본문 바로가기
Security Essay

웹 스크래핑을 활용한 공격 사례

by _Jay_ 2021. 6. 25.
반응형

인터넷에서 정보를 긁어온다..라는 말을 들어보셨는 적이 있는지 모르겠는데요. 종종 인터넷에 있는 정보를 가져와서 가공해서 사용해야할 때가 있죠. 이렇게 공개된 웹 사이트에서 필요한 데이터를 추출하는 기술을 웹 스크래핑(Scraping) 또는 웹 크롤링(Crawling)이라고 합니다. 저도 가끔 웹 스크래핑을 통해 필요한 정보를 얻어올 때가 있는데, 네이버의 실시간 검색어 순위 또는 특정 기업의 현재 주가를 알고 싶을 때 등 다양한 경우에 사용할 수 있습니다. 그래서 오늘은 웹 스크래핑의 개념과 함께 이로 인해 발생하는 보안 사고에 대해서 말씀드려보겠습니다.

일단 웹 스크래핑 원리에 대해서 간단히 설명드리고 넘어가보죠. 기본적으로 웹에서 통신을 할 때는 HTTP(Hyper Text Transfer Protocol)를 사용한다는 건 다들 아실겁니다. 여기서 하이퍼텍스트는 단순하게 인터넷에서 사용되는 웹 문서 형식인 HTML을 생각하시면 되겠죠. 브라우저에서 오른쪽 마우스를 클릭해서 소스 보기를 누르면 나오는 코드가 HTML 입니다. 이 HTML은 기본적으로 서버에서 보내준 정보라고 생각하시면 되는데요.

네이버에 접속하는 과정을 클라이언트/서버(C/S) 모델에 대입해서 설명하면, 크롬과 같은 웹 브라우저(클라이언트)에서 네이버 주소를 입력하고 엔터를 치면, 클라이언트가 네이버 서버로 메인 페이지를 보내달라고 요청(Request)을 하게 됩니다. 그러면 네이버 서버는 클라이언트에게 요청에 대한 응답(Reponse)를 날려주게 되는데, 이때 보내는 데이터가 네이버 메인 페이지의 화면을 표시하는 HTML이고 웹 브라우저는 이 HTML을 해석해서 우리에게 보여주게 되죠. 물론 웹 브라우저 안에 존재하는 웹 엔진에서 HTML을 파싱하고, 화면에 렌더링하는 등 몇몇 과정이 더 있지만 자세한 내용은 여기서 생략하도록 하겠습니다.

그래서 HTML을 코드를 보시면 '<html><head><body>...</body></head></html>'과 같은 형식으로 시작 태그 와 끝 태그 사이에 다른 태그들이 들어가서 정보를 표현하는.. 이른바 트리 구조 형식을 가지고 있습니다. 내가 원하는 정보도 특정 태그 안에 포함되어 있겠죠. 예를 들어 큰 글씨로 뉴스 기사의 제목이 존재하면 이는 HTML에서 '<h1>헤드라인</h1>'과 같이 존재할 겁니다. 하나의 웹 페이지에서는 정형화된 구조로 HTML 태그가 존재하기 때문에 <li>, <h1>과 같은 특정 구조를 이용해서 원하는 정보만 추출할 수 있겠죠.

그래서 웹 스크래핑 과정을 다시 정리하자면.. 저희가 서버에 요청해서 웹 페이지의 HTML을 받아오고, 분석을 통해 해당 HTML의 구조를 알게 된다면 특정 태그에서 원하는 텍스트를 추출할 수 있게 되는 겁니다. 이미 파이썬과 Node.js 같은 언어에서는 웹 스크래핑을 쉽게 하기 위한 라이브러리를 제공하고 있기 때문에 어렵지 않게 직접 구현할 수 있죠. 만약 위의 과정이 완전히 이해가 안되더라도, 대강 흐름만 이해하고 계신다면 뒤의 공격을 이해하시는데 무리가 없을 겁니다.

자 여기까지 웹 스크래핑에 대한 개념을 설명드렸고 그럼 해커들이 이를 어떻게 활용하는지 알아보겠습니다. 짐작하셨다시피 웹 스크래핑 자체는 원래 불법이 아니기 때문에 해킹 공격이라고 정의할 수는 없습니다. 하지만 보통 개발자들의 실수에 의해서 침해 사고의 초석이 될 수는 있죠. 단적으로 말씀드리면 가끔 웹 페이지를 개발할 때 테스트 용도로, 관리자 페이지의 ID와 패스워드를 주석으로 써 놓는 경우가 있습니다. 테스트 서버에서만 그러면 상관이 없지만, 문제는 이를 그대로 운영 서버에 적용하는 경우 입니다. 해커가 특정 사이트를 웹 스크래핑 기법을 통해서 미처 제거되지 않은 크리덴셜을 추출하여 관리자 페이지에 접속한다면.. 이런 시나리오가 충분히 가능하겠죠.

 

 

사이버 공격이라고 할 수도 없고 안 할 수도 없는 ‘웹 스크래핑’

웹 스크래핑(Web scraping)은 인터넷만큼이나 역사가 깊은 개념이다. 그럼에도 늘 간과되거나 조명을 받지 못하고 있다. 엄밀히 말하면 ‘해킹 공격’이나 ‘침해 사고’로 분류되고 있지 않기 때

www.boannews.com

 

인용한 기사에서는 좀 더 다양한 사례들을 다루고 있고 이에 대한 대응 방법 또한 말해주고 있으니, 읽어보시면 도움이 되실 것으로 생각합니다. 이전에 쓴 "페이스북 개인정보 유출 사례"의 원인을 최근 페이스북 측이 공개된 정보를 스크래핑 한 것이 노출된 것이라고 밝힌 바 있는데요. 사실 다른 취약점으로 개인정보가 노출되었든, 웹 스크래핑을 통해 정보가 유출되었든 여기서 중요한 점은 데이터를 스크래핑하는 과정에서 위험이 발생할 수 있다는 점이겠죠. 이와 같은 문제가 일어나지 않기 위해서는 개발 단계부터 조심해야 할 필요가 있을 것 같습니다. 자.. 그럼 오늘 말씀드릴 내용은 여기까지구요. 다음 에세이에서 뵙도록 하겠습니다. 감사합니다.

반응형

댓글