커뮤니티

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

한동안 라이믹스 업데이트만 간간히 해주고 거이 방치했더만 구글 애드샌스 광고 아이디가 제것이 아닌 다른 것으로 변조된 듯 합니다.

 

변조 의심되는 스크립트 :

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1234567890123456" crossorigin="anonymous"></script>


*위에 1234546...456으로 끝나는 보기에도 비상식 적인 번호는 제 애드센스 번호가 아닙니다.

 

살펴보기 시작한 계기는 카카오톡 링크를 타고 카카오 인앱 브라우저로 열린 웹페이지에 "카카오톡 앱의 현재 접속한 페이지 내 보안인증서 문제가 있는 콘텐츠를 차단했습니다" 란 경고 메세지가 출력되 이상기후가 느껴져 사이트에 혹 보안인증 되지않은 이미지나 파일 링크가 걸린게 있나 살펴보다 그누보드 사용자 분 중 구글 애드센스 광고의 아이디가 변조되었다는 글을 보고 제 사이트의 애드센스 광고들을 조사해 보니 일부 게시판에 상하 목록으로 삽입되었던 광고의 아이디가 위와 같이 변조된 사실을 발견 했거든요,

 

위젯이나 레이아웃에 삽입된 광고는 변조가 없는 것으로 보아 게시판(스케치북5 스킨)의 권한 을 우회하여 뭔가 비 정상적인 파일 첨부나 html 에디터를 이용해 해킹을 시도한 것이 아닌가 짐작만 하고 있습니다.

 

일단은 변조된 스크립트 아이디 번호를 제 번호로 모두 바꾸기만 하고 지켜보는 중입니다 (1회성이 아닌 지속적인 해킹툴을 심어 놓은 것이라면 또 변조 되겠지요;;;;)

 

손에 잡히는 할수있는 방법으로 파일권한이나 게시판의 html 사용 권한등을 한번 다시 살펴 봐야겠어요 

 

제 사이트의 소유자 / 디텍토리 / 파일 권한은 

D 775 F 664  files 폴더 권한만 777 로 되어있고 소유자는 http로 설정되 있습니다.

 

혹시 구글 애드센스 광고 해킹의 원리와 해킹툴에 대한 지식이나 경험이 있으신 분들 계실까요?

어디서 무었을 손봐야 하는 지 막막 하기만 해서 질문을 드려 봅니다 회원님들...

 

개인 취미로 라이믹스 사이트 몇개 운영중 입니다만 ... 어렵네요 ^^

댓글 16

  • 애드센스 코드가 어디에 입력되어 있었는지부터 분명히 알려 주셔야 할 것 같습니다.

     

    게시판 스킨(스케치북5) 소스에 넣어 놓으셨나요?

    → FTP 계정 해킹, 또는 소스를 변조하는 악성코드 감염

    → 어떤 형태로든 파일 수정 또는 업로드를 지원하는 서드파티 자료가 있다면 매의 눈으로 살펴보셔야 합니다.

     

    아니면 게시판 설정의 헤더 스크립트 등, 관리자 화면에서 변경할 수 있는 곳에 넣어 놓으셨나요?

    → 관리자 계정 해킹

     

    원래 있던 곳의 소스나 설정을 원상복구하니 모든 광고가 정상으로 돌아왔나요?

    → 원래 있던 곳 외에 애드센스 코드가 더 추가되지는 않았는지 확인

  • @기진곰

    먼저 질문에 답글에  무한 감사 를 앞서 드립니다

     

    구글 애드샌스 광고는 

    1.메인 위젯 페이지의 위젯 설정시 직접 넣었고

    2.관리자 페이지 레이아웃 디자인 설정의 위젯 설정에서 커스텀 위젯 설정으로 상하단 넣었으며 

    3.게시판의 설정으로 들어가 상,하단에 넣었습니다.

     

    *기억으로는 게시판 설정 위젯들 위주로 변조가 된듯 하긴한데 지금 생각해보니 메인 위젯 페이지의 위젯도 변조가 된듯도 했던 것 같기도 하고;;;;

    희안한건 따로 레이아웃을 두어 돌렸던 블로그 페이지의 레이아웃이나 로그북 게시판 등의 광고는 또 변조가 없었던 걸 보면 메인으로 사용중인 스케치북 스타일 레이아웃이 공격 당한것 같기도 하고...

     

    지금 현제는 일단 구글 애드센스 계정에서 광고 아이디를 다시 받아와 모두 바꿔놓고 변조가 또 생기나 지켜보고 있습니다..

    그리고 메일 인증 없던 미 인증 회원들은 모두 탈퇴시킨 상태입니다.

     

    그리고 수시로 관리자 계정 로그 기록도 살펴보긴 하는데 언제 변조가 있었던 건지 워낙 방치했던 페이지라...

    그리고 관리는 거의 서버와 동일 네트워크 안에서 하고 있어서 라우터 아이피 외에 페이지 접근 로그는 보이질 않고 있긴 합니다.

    새벽에 작업해 놨는데 아직까진 변조가 이뤄지진 않은 걸 봐선 해킹툴이 설치되 자동 변조 작업을 하고 있는 것 같진 않기도 하고... 좀 더 이부분은 추이를 지켜봐야 할것 같아요 기진곰 님 

     

    메인 위젯 페이지 입력.JPG.png

    레이아웃 위젯 설정-하단.JPG

    레이아웃 위젯 설정-상단.JPG.png

    게시판 설정 입력.JPG.png

     

  • @EveryNightWalkingman

    위젯 페이지나 레이아웃 설정도 소스 편집 없이 관리자 권한으로 수정할 수 있는 부분이니, 누군가가 관리자 권한을 사용해서 멋대로 수정했다고 보는 것이 가장 합리적이겠습니다.

     

    만약 관리자가 한 명뿐이라면 그 아이디/비번이 유출되었거나 해킹당한 것이고, 만약 평소에 쓰지 않는 다른 관리자 계정이 있다면 그 계정이 문제일 수도 있습니다. 테스트용이나 외부 개발자 작업용으로 test 1234 이렇게 만들어 놓고 잊어버리는 분들을 종종 봅니다.

  • @기진곰

    내 예의 주시해서 살펴보겠습니다.일단 관리자 계정으로 로그인을 하면 로그기록 에서 볼수있는데 ftp(ssh 는 잠겨있고 필요시에만 열어 사용합니다;;;) 등으로 접속하면 라이믹스 로그기록엔 안 남겠지만 http 관리 계정이 아닌 서버 관리 계정이라 알림과 메일이 오며 점근 ip기록이 되니 지켜봐야 겠네요.. 만일 해킹툴이 잠복해 있다면 로그 기록 없이 또 다른 변조가 일어나겠죠?

     

    일회성 해킹 이면 좋으련만 ....주시하며 살펴보고 또 다른 변조나 로그 기록이 욜라오나 지켜보려 합니다 기진곰님... 언제나  회원들 질몬에 관심을 주시고 해결해 주시니 항상 감사하게 생각합니다 편안밤 되세요...

  • 음.. 저는 서버 전문가는아니라서. 해킹 자체에 대해서는 도움 드릴만한것이 없지만...

     

    이미 알고 계실수도 있지만..혹 모르시는 분들을 위해서..

     

    애드센스는 기본적으로 3가지가 일치해야지만 정상적인 광고로 인식을 합니다.

     

    1. 애드센서 유저는 각각 고유의 코드 번호를 부여 받습니다.

     

    현재 client=ca-pub-1234567890123456 이런식으로

     

    본인 애드센스 식별 코드와 같지 않은것을 확인하시고

     

    해킹을 발견 혹은 의심하고 계신것으로 보입니다.

     

    위와 같이 아무 사이트에나

     

    내 애드센스 광고 코드를 넣어서 수익을 발생시킬수 있던 때가 있었습니다.

     

    다만 위 해킹 사건과 같은 식의 사건이 많아서인지...

     

    최근에는(몇년전인지 기억이잘...)

     

    서버 최 상위 디렉토리(/)에

     

    2. ads.txt라는 파일을 삽입해야 한다는 규정이 생겼습니다.

     

    위 파일 목록에 있는 사람의 애드센스 광고 코드만 

     

    현재 사이트에서 광고를 진행하고 있다는것을 명시적으로 적어둔 문서 파일입니다.

     

    즉, XE이던 라이믹스이던 어떤식의 해킹으로 인하여 

    XE 혹은 라이믹스 파일이 해킹 공격자의 애드센스 코드로 변조 된다고 하더라도

     

    제가 위에 언급한 ads.txt 파일을 변조하지 못할경우.

     

    사용자 일치가 일어나지 않아서 정상적인 수익 지급이 되지 않는것으로 알고 있습니다.

    (강제 사항은 아니며 위 파일이 존재 한다면 비교를 하도록 되어 있습니다.

    없어도 일반적인 수익에는 문제가 없을수 있지만.

    애드센스 수익감소 관련 경고가 지속적으로 나옵니다.

    경우에 따라서는 광고 송출 중단까지 시행되는 경우도 있으니

    위와 같은 해킹건의 진행을 지켜보실때 꼭 설정해두시기 추천 드립니다.)

     

    또한

     

    애드센스 계정에 로그인을 해보시면

     

    3. 사이트 관리(?)라는 메뉴를 통하여

     

    내 광고 코드가 1회 혹은 다수 노출된 사이트명(도메인) 명들을 확인하고

     

    내가 운영하는 사이트가 맞음을 확인하고 곳이 있습니다.

    (이건 이번 해킹과 거꾸로.. 남의 애드센스 계정을 정지 시킬 목적으로

    아무 사이트에나 해당 애드센스 광고 코드를 걸어 두고

    불법 사이트 및 성인 사이트 혹은 부정클릭을 유발하여 정책 위반을 유발하는 행위)

     

    결론적으로

     

    애드센스 광고 코드 + ads.txt + 애드센스 내 사이트 관리 메뉴

     

    위 3개가 일치해야지만 정상적인 수익 지급이 이루어집니다.

     

    거꾸로 이야기 하면

     

    현재 라이믹스 변조 부분만 확인하실것이 아니라

     

    위 3가지를 모두 확인하시는 절차를 거치셔야 할듯합니다.

     

    아울러.

     

    해킹으로 의심되는 광고 코드는 구글 애드센스 쪽에 신고를 하시면

     

    가능성은 낮겠지만 해킹사례로 증명이 된다면

     

    실 수익은 사이트 소유주인 질문자님께 되돌아 올수도 있을듯 합니다.

     

    조금이나마 도움이 되셨으면 합니다.

     

    긴글 읽어 주셔서

     

    감사합니다.

  • @좋은아빠되기

    아 생각치도 못했던 방향 이네요 일단 ads.txt 내 내용은 변조되지 않았습니다 제 아이디 번호가 맞고요 오래된 수법으로 변조가 된 것 봐서는 방치했던 웹이라 구글 정책이 바뀌기 전 ,이미 오래전 변조 해킹이 있었던 거라 생각할수 있겠네요 일단 참조해 주신 내용을 토대로 제 사이트 와 애드센스 계정 모두를 살펴봐야 겠습니다...

     

    수익은 아직 별것 아니지만 애드센스 승인 받으려 한 노력이 물 거품이 된다는 건 그것도 하급 트랙커 나부랑이 때문 이라면 정말 화가 날 일이겠지요 팁 과 귀한 조언 감사드립니다 좋은 아빠님 이 기록이 다른 사용자 분들 께도 분명 많은 도움이 되실 겁니다 좋은 날 되세요 좋은 아빠님 ^^

  • "D 775 F 664  files 폴더 권한만 777 로 되어있고 소유자는 http로 설정되 있습니다."

    이중 owner가 http라는 부분이 걸리네요.

     

    다시 말해서 웹에서 화일의 내용을 수정또는 변조할 수 있다는 의미입니다.

    폴더와 파일의 퍼미션을 D 755 F 644 로 하고

    owner를 user 즉, 로그인 계정으로 수정하시는 것이 어떨까 싶습니다.

    files 폴더를 제외하고는 http, apache, nobody 등등이 글을 쓰거나 수정할 수 없게 해야할 것같습니다.

  • @카르마

    귀한 조언 감사 드립니다 카르마 님 

    저도 항상 파일 권한과 폴더 권한이 맘에 걸렸지만 까다롭게 설정 후 예전 XE 코어 시절에 파일 업로드나 글 작성시 문제가 발생한 경험으로 그냥 다 열어놓다 시피 한 것인데 라이믹스 코어 이후론 시도를 안해 봤지만 권한과 소유자를 정밀하게 다시 손봐야 겠어요 항상 맘 한구석 찜찜 했던 부분 입니다.

    한가지 질문은 오너를 유저로 수정 한다는 부분을 좀 풀어주실수 있으실까요:? 

     

    지금 전 ssh로 접근해서 명령어로 단순히 sudo chown -R http:http xe 명령으로 루트 폴더와 하위 디텍토리에 일관 적으로 그룹과 소유 권한을 부여하고 파일 퍼미션 권한 조정 후 files 폴더만 777 권한 부여만 해왔거든요.

  • @EveryNightWalkingman

    파일이나 폴더를 웹에서 수정, 변조할 수 있다는 표현의 정확한 의미를 알아야 합니다. 지나가던 사람 누구나 수정, 변조할 수 있다는 뜻은 당연히 아닙니다. 해당 서버를 이용하는 다른 사람이나, 다른 프로그램이 수정, 변조할 수 있다는 뜻입니다.

     

    http, apache 등의 계정으로 돌아가는 프로그램이라면 아파치, PHP 등이 있겠지요. 이런 프로그램을 해킹한 경우, http, apache 등의 계정이 소유한 파일을 변조할 수 있을 것입니다. 물론 아파치의 RCE 취약점을 해킹할 만한 위인이 애드센스 코드나 갈아치우고 있지는 않겠죠?

     

    그렇다면 해당 서버를 이용하는 다른 사람이란 누구인가? 서버에 ftp나 ssh로 접속할 수 있는 계정을 갖고 있는 사람을 뜻합니다. 00년대 방식의 웹호스팅이라면 이 부분에 주의해야 합니다. 한 서버를 많은 사람이 공유하니까요. 그러나 요즘 웹호스팅은 퍼미션과 무관하게 다른 계정의 파일을 건드리는 것을 허용하지 않습니다. 리눅스에서 권한을 제어하는 방법이 퍼미션만 있는 것은 아니거든요. 님이 sudo를 할 수 있다면 님 혼자 쓰는 서버일 테니 더더욱 해당이 없습니다.

     

    즉, 요즘은 20년 전에 비해 퍼미션의 중요성이 많이 떨어졌습니다. 물론 불필요한 프로그램이 불필요한 권한을 갖지 않도록 셋팅하는 것이 좋긴 하지만, 777로 하면 다 털려요! 는 사실이 아닙니다.^^

  • @기진곰

    내 그렇군요 정확한 보안과 퍼미션의 개념을 이번 기회에 슉지 하게 됬으니 인생사 새옹지마라 잃은 중에 얻은 보석같은 교훈 입니다.

     

    제 서버 환경은 나스에 웹 페이지를 올려서 관리하고 있는 중이라  ssh는 필요시에만 열어 사용하고 ftp는 물론 보안성은 떨어지나 외부 포트 변경을 한 상태이며  타인이나 프로그램이 접근시 log기록이 관리자 메일로 날아오며 ip기록되어 경고를 알리게 되 있거든요 

     

    물론 도커 컨테이너를 사용하여 웹 을 관리하면 좀 더 보안 적인 측면이나 기능적인 측면에서 탁월한 부분이 있지만 도커 사용시 시스템 메모리 점유가 늘어나서 나스제공 웹 스테이션을 사용 중 입니다.(다시금 일괄 시스템 변경 하는게 막막 하기도 하구요)

     

    일단 라이믹스 웹이 설치된 루트 폴더 이하 퍼미션을 상향 조정하고 특히 생각없이 관리하던 파일 폴더의 권한을 777이 아닌 755로 좀 더 엄격히 적용해 봐야 겠어요 

     

    혹 기진곰님 경우라면 일괄 퍼미션 조정과 파일 폴더 와 폴더 내 파일 권한을 어떻게 조정하는게 좋다고 생각 하실런지요? 

    그리고 http 그룹과 유저 의 소유권 조정은 어떻게 조정해야 할까요?

  • @EveryNightWalkingman

    아파치나 nginx를 실행하는 계정은 OS에 따라 다른데, 사용하시는 나스에서는 http인 모양이군요. 우선 그 계정은 아파치나 nginx를 실행하는 것 외에는 아무 것도 하지 않는 것이 좋습니다.

     

    http와 별도로 계정을 2개 만듭니다. 각각 A와 B라고 하겠습니다. A는 평소에 쓰는 유저 계정을 그대로 사용해도 됩니다. B는 새로 만드는 것이 좋습니다.

     

    홈페이지를 구성하는 폴더와 파일들 중 files 폴더를 제외한 나머지는 A가 소유하고, 실제로 A의 홈 폴더 아래에 존재하도록 합니다. 평소에 A 계정으로 접속해서 홈페이지를 관리하는 데 편리하도록요.

     

    files 폴더만 B가 소유하도록 합니다.

     

    여기부터가 중요한데, PHP를 B의 권한으로 실행해야 합니다. 요즘은 아파치에 PHP 모듈을 얹어서 쓰기보다는 PHP-FPM을 따로 돌리는 경우가 많고, nginx라면 사실상 의무사항이죠. 따라서 http 계정이 PHP까지 담당할 필요가 없습니다. PHP-FPM pool 설정 파일에서 http가 아닌 B 계정의 권한으로 실행하도록 하면 됩니다. (단, PHP-FPM 기본값을 변경하면 세션 저장소 권한 등을 다시 확인해야 할 수 있습니다. 만약 계정 변경 후 로그인이 안 된다면 세션 저장소 권한 문제입니다.)

     

    모든 폴더의 퍼미션은 755, 파일은 644를 유지합니다. 그래야 http, A, B 계정이 서로의 파일을 읽을 수 있습니다. 쓰는 것은 자신이 소유한 폴더나 파일만 가능합니다. A는 files를 제외한 홈페이지 소스를 쉽게 관리할 수 있고, B는 files 안에만 쓸 수 있고, http는 PHP와 무관한 파일들을 담당합니다. 세 계정의 역할이 깔끔하게 나눠 떨어지고, 어느 누구도 다른 계정이 소유한 폴더나 파일을 수정할 필요는 없습니다. 자연스럽죠. 억지가 없습니다. (단, 상위 폴더의 퍼미션이 부족한 경우 다른 계정이 읽을 수 없으니, 상위 폴더도 한 번쯤은 확인해야 합니다. 홈 폴더 자체가 700인 경우가 종종 있습니다.)

     

    사람마다 취향이 다르고, 다른 방법으로 위와 비슷한 효과를 얻을 수도 있겠지요. 그러나 위의 방법은 일반적인 개인 서버에서 최소한의 변경으로 편리함과 보안성을 모두 잡을 수 있는 방법이라 자주 추천해 드리고 있습니다.

  • @기진곰

    원래 퍼미션 구현이 어질어질 하더군요.. 환경마다 다르기도 하고 어지럽지만 깊이 고민하겠습니다 감사합니다 기진 곰님 일단은 급히 755 / 644 로 그리고 파일 707 로 새는 댐 막음해 놓은 상태 입니다 ^^;;

  • @EveryNightWalkingman

    계정 소유권을 제대로 맞춰 놓으면 755 777 등의 퍼미션 숫자는 신경쓸 필요도 없습니다.

     

    웹호스팅이야 고객마다 계정이 정해져 있으니 퍼미션 숫자를 갖고 아웅다웅할 수밖에 없지만, 개인 서버라면 소유권으로 컨트롤하는 것이 훨씬 깔끔해요. 누가 어디에 들어갈 수 있네 없네 따지기보다, 그냥 쿨하게 집 한 채씩 나눠주는 셈이죠.

  • @기진곰

    한가지만 더 여쭤 보겠습니다 나중에 지나시다 글을 보시면 답을 주셔도 되거든요,

    혹시나 해서 ssh로 들어가  ps -eo user,comm | grep nginx 명령어로 nginx 사용자 / 그룹 계정이 어떻게 되나 살펴 보니

    유저는 http / 그룹은  nginx 로 나오는데 (맞나?) 

     

    ps -eo user,comm | grep nginx
    http     nginx
    http     nginx
    http     nginx
    http     nginx
    root     nginx
    이러면 제가 chown -R http:http 설정한 명령어로 설정한 그룹 http / 유저  http의 설정이 안맞는 것 아닐까요?

    제가 웹 소유자를 잘못 설정했나 하는 노파심으로 질문 남깁니다 

     

     

  • @EveryNightWalkingman

    user,comm으로 명령하면 그룹명이 나오는 것이 아니고 프로그램 이름이 나옵니다.

  • @기진곰

    아 그런가요? 그럼 nginx 사용자는 http 와 root라는 뜻이겠군요?