본문 바로가기
분석

인터넷 등기소 프로그램 (IPRT) 분석

by Joseph.Lee 2024. 10. 3.

인터넷 등기소 홈페이지를 들어가면 그 즉시 Legacy 한 향기가 물신 풍겨온다.

로그인 한 번 하려고 해도 이상한 프로그램을 설치하고, 한참 기다려야 입력이 되며,

부동산 등기 한 번 뽑는데도 잘 되어야 10분을 걸린다..

집 알아볼 때 부동산 등기 뽑는데 카페에서 수 십 분을 삽질한 기억이 있다.

 

이거를 headless 로 자동화 해 볼까 싶어 잠깐 시도하다 말았었는데 오늘 쉬는 날인 김에 기록해본다..

 

 

 

등기 열람/발급 시 브라우저에서는 "iprtcrsigmprintxctrl:///?registappQ2..." 와 같은 URL 을 호출하고, windows 레지스트리에 등록된 핸들러를 통해 "C:\Program Files (x86)\markany\maepscourt\IPRTCrsIgmPrintXCtrl.exe" " iprtcrsigmprintxctrl:///?registappQ2..." 가 실행된다.

 

IPRTCrsIgmPrintXCtrl.exe 는 봐온 프로그램 중에 가장 골때리는 프로그램이다.

WinLicense 3.x (Themida 만든 회사의 프로그램) 가 적용되어 있어 디버깅이나 리버스엔지니어링 등이 매우 어려우며, 타사 보안 프로그램 (아마도 nProtect) 을 통해 메모리 보호가 적용되어 있어 메모리 덤프나 프로세스 덤프도 불가하다.

 

그래도 이리 저리 알게 된 것은 이와 같다.

 

실행 순서:

 

1. argument 로는 base64 로 인코딩 되어 Cookie 와 발급 번호 등이 전달된다.

 

2. 특이한게.. winlicense 을 사용하면서도 더 빡세게 난독화 하기 위해서인지... iprtcrsIgmprintxctrl.xgd 프로세스를 생성한다.

- iprtcrsIgmprintxctrl.xgd 파일은 더미 파일로 보인다.

- iprtcrsIgmprintxctrl.exe 파일은 메모리를 적게 먹고, iprtcrsIgmprintxctrl.xdg 가 많이 먹으며 dll 로드도 마찬가지이다.

- iprtcrsIgmprintxctrl.exe 가 내부의 암호화 등을 풀어 iprtcrsIgmprintxctrl.xdg 프로세스를 생성하고, iprtcrsIgmprintxctrl.xdg 프로세스에 메모리를 Write 해서 복호화 된 (?) 프로세스 데이터를 삽입하는 것으로 추측된다.

 

3. iprtcrsIgmprintxctrl.xdg 가 실행되면 AnySign 의 E2EE 솔루션 (?) 을 이용해서 암호화 된 상태로 데이터를 수신한다.

- https 로 통신하지만 fiddler 으로 복호화된 http 트래픽을 볼 수 있다. 포트를 차단하면 http 로도 다운그레이드해서 통신한다.

- "C:\Program Files (x86)\SoftForum\XecureWeb\AnySign\dll\AnySignCSWrapper.dll" 에서 담당한다.

-복호화 함수를 후킹해서 E2EE 로 암호화 된 내용을 보면 아래와 같은 내용이 주루륵 나온다.

<?xml version="1.0" encoding="euc-kr" ?>
<icrsRoot>
<item>
<lpJuMalCom></lpJuMalCom>
<lpInternet>*</lpInternet>
<lpCurLine>81</lpCurLine>
<lpTotalPage>14</lpTotalPage>
<lpDevide>X</lpDevide>
<lpCurPage>1</lpCurPage>
<lpDgno><![CDATA[009100]]></lpDgno>
<lpLineStyle><![CDATA[N]]></lpLineStyle>
....
<callPosition><![CDATA[INTERNET_PRINT]]></callPosition>
<m_strCost_gb><![CDATA[1]]></m_strCost_gb>
<lpTitle><![CDATA[....]]></lpTitle>
<lpIssueViewClsCd><![CDATA[1]]></lpIssueViewClsCd>
<lpRdStamp><![CDATA[0]]></lpRdStamp>
<lpDgCls><![CDATA[1]]></lpDgCls>
<strBujunji_cd><![CDATA[]]></strBujunji_cd>
<lpGaSanghoCode><![CDATA[00]]></lpGaSanghoCode>
<tagDummy09><![CDATA[tagDummy09]]></tagDummy09>
<tagDummy08><![CDATA[tagDummy08]]></tagDummy08>
<tagDummy07><![CDATA[tagDummy07]]></tagDummy07>
<tagDummy06><![CDATA[tagDummy06]]></tagDummy06>
<lpBalNo><![CDATA[.... 1]]></lpBalNo>
<tagDummy05><![CDATA[tagDummy05]]></tagDummy05>
<tagDummy04><![CDATA[tagDummy04]]></tagDummy04>
<tagDummy03><![CDATA[tagDummy03]]></tagDummy03>
<tagDummy02><![CDATA[tagDummy02]]></tagDummy02>
<tagDummy01><![CDATA[tagDummy01]]></tagDummy01>
<tagDummy00><![CDATA[]]></tagDummy00>
<lpZoom><![CDATA[100]]></lpZoom>
<lpYouMuSang><![CDATA[1]]></lpYouMuSang>
<lpBunin><![CDATA[11]]></lpBunin>
<sinchungLine><![CDATA[0]]></sinchungLine>
<lpMalsoGB><![CDATA[1]]></lpMalsoGB>
</item>
<item>
<lpLineStyle><![CDATA[N]]></lpLineStyle>
<lpCommonFlag><![CDATA[N]]></lpCommonFlag>
<lpJuMal><![CDATA[]]></lpJuMal>
<lpImwon><![CDATA[ ..... ]]></lpImwon>
<lpValidGb><![CDATA[?]]></lpValidGb>
<lpJuMalCom></lpJuMalCom>
<lpInternet>*</lpInternet>
<lpCurLine>64</lpCurLine>
<lpDevide>L</lpDevide>
<lpCurPage>2</lpCurPage>
</item>

- pdf 가 나오면 좋으려만 자체 규격이다.

 

XML 파서를 찾아보려고 했다.

- 다양한 dll 을 봤지만 파서는 없었다.

- 메모리 영역별로 메모리 덤프를 해봤더니 아, 메인 프로세스 (iprtcrsIgmprintxctrl.xdg) 에 있다.

- 여기서 포기..ㅋ

 

 

시도했지만 동작하지 않는 것.

- 아마도 WinLicense 의 anti-debug 와 nProtect 보안 기술 때문인 듯 하다..

- API Monitor v2

- drltrace (최신 버전으로 수정한 버전을 올려놓았다. https://github.com/jclab-joseph/drltrace )

 

덤프가 불가했다고 했지만 가능한 이유는..

dll side loading 기법으로 dll inject 해서 내부에서 메모리와 프로세스 덤프를 시도했다.

 

 

 

걍 빨리 인터넷 등기소를 다시 만들어주면 좋겠다... 짜증나는 사이트...

 

 

 

 

 

 

 

반응형

'분석' 카테고리의 다른 글

Intel vPro CIRA Packet  (0) 2023.01.05

댓글