Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
drltrace — Drltrace एक लाइब्रेरी कॉल्स ट्रेसर है जो विंडोज और लिनक्स अनुप्रयोगों के लिए है। | Kitploit
उपकरण/GitHubGitHub/mxmssh/drltrace
गतिशील विश्लेषण (सैंडबॉक्सिंग)रिवर्स इंजीनियरिंगडीबगर्समालवेयर विश्लेषणबाइनरी विश्लेषण
GitHubmxmssh/drltrace

drltrace

Drltrace एक लाइब्रेरी कॉल्स ट्रेसर है जो विंडोज और लिनक्स अनुप्रयोगों के लिए है।

रिपॉजिटरी देखें
419716 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Drltrace

विंडोज परीक्षण बिल्ड build status

लिनक्स परीक्षण बिल्ड Build Status

Drltrace विंडोज और लिनक्स अनुप्रयोगों के लिए एक गतिशील API कॉल ट्रेसर है। Drltrace DynamoRIO गतिशील बाइनरी इंस्ट्रुमेंटेशन फ्रेमवर्क पर आधारित है। Drltrace को मूल रूप से Derek Bruening द्वारा कार्यान्वित किया गया था और DynamoRIO और DrMemory फ्रेमवर्क के साथ वितरित किया गया था। इस रिपॉजिटरी में drltrace का एक स्वतंत्र संस्करण है जिसमें मैलवेयर विश्लेषण के लिए इसका उपयोग करने के लिए अतिरिक्त स्क्रिप्ट और सामग्री शामिल है। रिलीज़ बिल्ड यहाँ से डाउनलोड किया जा सकता है।

उपयोग

drltrace का उपयोग बहुत सरल है। उपयोगकर्ता को एक लॉग निर्देशिका और एक लक्ष्य प्रक्रिया का नाम निम्नलिखित तरीके से निर्दिष्ट करना होगा:

root@kitploit:~
drltrace -logdir . -- calc.exe

बस इतना ही, उपकरण लक्ष्य प्रक्रिया में आवश्यक DLLs इंजेक्ट करेगा, इंस्ट्रुमेंटेशन शुरू करेगा और समानांतर में लक्ष्य प्रक्रिया में निष्पादित सभी लाइब्रेरी कॉल के बारे में जानकारी लॉग करेगा:

root@kitploit:~
~~43600~~ msvcrt.dll!__wgetmainargs
    arg 0: 0x010d2364
    arg 1: 0x010d2368
    and return to module id:0, offset:0x193a
~~43600~~ ntdll.dll!EtwEventRegister
    arg 0: 0x002ff994
    arg 1: 0x010d1490
    and return to module id:0, offset:0x157e
~~43600~~ ntdll.dll!EtwEventSetInformation
    arg 0: 0x007b4b40
    arg 1: 0x00000033
    and return to module id:0, offset:0x15a1
~~43600~~ SHELL32.dll!ShellExecuteW
    arg 0: <null> (type=<unknown>, size=0x0)
    arg 1: <null> (type=wchar_t*, size=0x0)
    arg 2: calculator:// (type=wchar_t*, size=0x0)
    arg 3: <null> (type=wchar_t*, size=0x0)
    arg 4: <null> (type=wchar_t*, size=0x0)
    arg 5: 0x1 (type=int, size=0x4)
    and return to module id:0, offset:0x167d

आउटपुट का प्रारूप सरल है और इसे बाहरी स्क्रिप्ट द्वारा आसानी से पार्स किया जा सकता है:

root@kitploit:~
~~[thread id]~~ [dll name]![api call name]
arg [arg #]: [value] (type=[Windows type name], size=[size of arg])
and return to module id:[module unique id], offset:[offset in memory]

-grepable तर्क का उपयोग करने पर grep के साथ पार्सिंग की जा सकती है; यह फ़ंक्शन नाम और तर्कों को एक पंक्ति में प्रिंट करता है:

root@kitploit:~
~~4824~~ KERNELBASE.dll!CreateFileW {0: C:\Windows\Fonts\staticcache.dat (type=wchar_t*, size=0x0)} {1: 0x80000000 (type=DWORD, size=0x4)} {2: 0x3 (type=DWORD, size=0x4)} {3: 0x005cde8c (type=<unknown>*, size=0x0)} {4: 0x3 (type=DWORD, size=0x4)} {5: 0x80 (type=DWORD, size=0x4)}

मॉड्यूल अद्वितीय पहचानकर्ता तालिका लॉग फ़ाइल के अंत में मुद्रित की जाती है:

root@kitploit:~
Module Table: version 3, count 70
Columns: id, containing_id, start, end, entry, checksum, timestamp, path
  0,   0, 0x010d0000, 0x010da000, 0x010d1b80, 0x0000f752, 0xb5fe3575,  C:\Windows\SysWOW64\calc.exe
  1,   1, 0x6d4c0000, 0x6d621000, 0x6d563940, 0x00136d65, 0x59ce1b0b,  C:\Users\Max\Downloads\drltrace\drltrace\dynamorio\lib32\release\dynamorio.dll
  2,   2, 0x73800000, 0x73975000, 0x7380dbf7, 0x00000000, 0x59ce1b0f,  C:\Users\Max\Downloads\drltrace\drltrace\bin\release/drltracelib.dll
  3,   3, 0x742f0000, 0x742fa000, 0x742f2a00, 0x0000c877, 0x0adc52c1,  C:\Windows\System32\CRYPTBASE.dll
  4,   4, 0x74300000, 0x74320000, 0x7430c9b0, 0x0002c617, 0x245970b4,  C:\Windows\System32\SspiCli.dll
  5,   5, 0x74410000, 0x74431000, 0x74416900, 0x0002a940, 0x88a53c1d,  C:\Windows\System32\GDI32.dll
  6,   6, 0x74440000, 0x74500000, 0x7446fb20, 0x000cc410, 0xd343d532,  C:\Windows\System32\RPCRT4.dll
  7,   7, 0x74500000, 0x74525000, 0x745047d0, 0x00026737, 0xa39c8991,  C:\Windows\System32\IMM32.DLL
  8,   8, 0x74550000, 0x745c7000, 0x7456e8a0, 0x00081857, 0x73b971e1,  C:\Windows\System32\advapi32.dll
  9,   9, 0x748f0000, 0x74929000, 0x748febd0, 0x00045303, 0xa58be652,  C:\Windows\System32\cfgmgr32.dll
 10,  10, 0x74930000, 0x75c78000, 0x74aa09d0, 0x01377aa6, 0x4b39926b,  C:\Windows\System32\SHELL32.dll

Drltrace आसानी से अंतर-लाइब्रेरी कॉल को फ़िल्टर कर सकता है और केवल मुख्य मॉड्यूल (या हीप) से किए गए API कॉल को प्रिंट कर सकता है, -only_from_app विकल्प निर्दिष्ट करके, जो उन अनुप्रयोगों के लिए बहुत उपयोगी है जो बड़े लॉग उत्पन्न करते हैं। अधिक सूक्ष्म नियंत्रण के लिए, -filter विकल्प उपयोगकर्ता को एक फ़िल्टर कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करने की अनुमति देता है ताकि विशिष्ट श्वेतसूचीबद्ध फ़ंक्शनों को फ़िल्टर किया जा सके, या कालीसूचीबद्ध फ़ंक्शनों को अनदेखा किया जा सके (उदाहरण के लिए filter.config फ़ाइल देखें)। Drltrace में कुछ उपयोगी बाहरी स्क्रिप्ट भी हैं जो किसी विशेष लाइब्रेरी के लिए API कॉल को फ़िल्टर करने, केवल संभावित रूप से दिलचस्प API कॉल और स्ट्रिंग को प्रिंट करने के लिए हैं।

लाइसेंस

Drltrace के मुख्य मॉड्यूल BSD के तहत वितरित किए जाते हैं।

Drltrace के लिए आवश्यक कुछ फाइलें LGPL के तहत वितरित की जाती हैं। अधिक जानकारी के लिए स्रोत फ़ाइलें देखें।

प्रेरणा

मैलवेयर विश्लेषण एक आसान काम नहीं है। Themida और Armadillo जैसे परिष्कृत सॉफ़्टवेयर पैकर्स और निश्चित रूप से मैलवेयर लेखकों द्वारा लिखे गए दर्जनों अनाम पैकर्स, साथ ही कोड और डेटा एन्क्रिप्शन, ऐसे नमूनों के स्थैतिक रिवर्स इंजीनियरिंग को काफी कठिन (कुछ मामलों में पूरी तरह से असंभव) बना देते हैं, जिससे मैलवेयर विश्लेषकों का जीवन जटिल हो जाता है। ऐसे मामले में, API कॉल ट्रेसिंग वास्तविक दुर्भावनापूर्ण इरादे को समझने में लगने वाले समय को काफी कम कर सकती है और संरक्षित दुर्भावनापूर्ण कोड के बारे में कई तकनीकी विवरण प्रकट कर सकती है।

जबकि API-हुकिंग की पारंपरिक तकनीक को कई समाधानों में सफलतापूर्वक लागू किया गया है, इस दृष्टिकोण का मैलवेयर लेखकों द्वारा अच्छी तरह से अध्ययन किया गया है और इसे आसानी से पता लगाया और/या बायपास किया जा सकता है। इसके अलावा, ये उपकरण स्वतंत्र भारी-भरकम GUI अनुप्रयोगों (मालिकाना उत्पादों के रूप में) के रूप में वितरित किए जाते हैं, जिन्हें अक्सर मौजूदा मैलवेयर विश्लेषण कार्यप्रवाह में एकीकृत करना आसान नहीं होता है।

यदि हम लिनक्स दुनिया को देखें, तो वहाँ ltrace नामक एक अद्भुत उपकरण है। एक एकल bash कमांड का उपयोग करके, हम आसानी से किसी निश्चित निष्पादन योग्य के API कॉल का पूरा ट्रेस प्राप्त कर सकते हैं।

हमारे पास विंडोज के लिए ऐसा उपकरण (लिनक्स में ltrace की तरह) क्यों नहीं है जो आधुनिक मैलवेयर द्वारा उपयोग की जाने वाली एंटी-रिसर्च चालों के प्रति भी पारदर्शी हो?

यह पता चलता है कि एक तकनीक है जो हमें विंडोज के लिए ऐसा उपकरण रखने और निष्पादित प्रोग्राम के प्रति पारदर्शी रूप से API कॉल को ट्रेस करने में मदद कर सकती है। इस तकनीक को डायनेमिक बाइनरी इंस्ट्रुमेंटेशन या DBI कहा जाता है। DBI इंस्ट्रुमेंटेशन कोड के इंजेक्शन के माध्यम से रनटाइम पर बाइनरी एप्लिकेशन के व्यवहार का विश्लेषण करने की एक तकनीक है।

हालांकि, मैलवेयर विश्लेषण के लिए DBI का अनुप्रयोग अनपैकिंग ऑटोमेशन और निर्देशों, बुनियादी ब्लॉकों और फ़ंक्शन कॉल ट्रेसिंग के लिए कई प्रमाण-अवधारणाओं तक सीमित है। जहाँ तक हम जानते हैं, drltrace DBI पर आधारित API कॉल ट्रेसिंग के लिए पहला उपकरण है जिसका उपयोग व्यवहार में मैलवेयर विश्लेषण के लिए किया जा सकता है। हमने अपने wiki में कई मैलवेयर विश्लेषण उदाहरण प्रदान किए हैं जहां हमने वर्णन किया है कि कैसे drltrace ने IDA या डीबगर शुरू किए बिना कुछ ही मिनटों में परिष्कृत दुर्भावनापूर्ण नमूनों के बारे में कई आंतरिक तकनीकी विवरण प्रकट करने की अनुमति दी।

Drltrace क्यों शानदार है?

  • समय-आधारित एंटी-रिसर्च तकनीकों द्वारा पता लगाए बिना दुर्भावनापूर्ण नमूनों का विश्लेषण करने के लिए पर्याप्त तेज़।
  • x86 और x64 दोनों का समर्थन करता है (भविष्य में ARM)।
  • विंडोज और लिनक्स दोनों का समर्थन करता है (भविष्य में macOS)।
  • स्व-संशोधित कोड का समर्थन करता है।
  • सभी प्रकार के लाइब्रेरी लिंकेज (स्टैटिक और डायनामिक) का समर्थन करता है।
  • मानक एंटी-रिसर्च दृष्टिकोणों (एंटी-हुकिंग, एंटी-डीबगिंग और एंटी-इम्यूलेशन) द्वारा पता लगाने योग्य नहीं।
  • उपयोगकर्ता drltrace को पहले से अज्ञात API कॉल (गैर-सिस्टम DLLs के बारे में भी) के बारे में अधिक विवरण प्रिंट करने का तरीका बताने के लिए आसानी से एक नया फ़ंक्शन प्रोटोटाइप जोड़ सकता है। बाहरी कॉन्फ़िगरेशन फ़ाइल का उपयोग किया जाता है।
  • अपने स्वयं के उद्देश्यों के लिए उपयोग करना और संशोधित करना आसान (कोई अतिरिक्त पैकेज आवश्यकताएँ नहीं, कोई भारी-भरकम GUI इंटरफ़ेस नहीं)।
  • ओपन-सोर्स, कोड स्पष्ट और अच्छी तरह से प्रलेखित है। आप drltrace के शीर्ष पर अपना स्वयं का उन्नत समाधान स्वतंत्र रूप से बना और उपयोग कर सकते हैं।

कमांड लाइन विकल्प

root@kitploit:~
 -logdir              [     .]  लाइब्रेरी कॉल डेटा प्रिंट करने के लिए लॉग निर्देशिका
 -only_from_app       [ false]  केवल ऐप से लाइब्रेरी कॉल की रिपोर्ट करता है
 -follow_children     [  true]  चाइल्ड प्रक्रियाओं को ट्रेस करता है
 -print_ret_addr      [ false]  लाइब्रेरी कॉल का रिटर्न पता प्रिंट करता है
 -num_unknown_args    [     2]  प्रिंट करने के लिए अज्ञात लिबकॉल तर्कों की संख्या
 -num_max_args        [     6]  प्रिंट करने के लिए तर्कों की अधिकतम संख्या
 -default_config      [  true]  डिफ़ॉल्ट कॉन्फ़िग फ़ाइल का उपयोग करें।
 -config              [    ""]  कस्टम कॉन्फ़िग फ़ाइल का पथ।
 -filter              [filter.config]  श्वेतसूची/कालीसूची फ़ाइल का पथ।
 -ignore_underscore   [ false]  "_" से शुरू होने वाले लाइब्रेरी रूटीन नामों को अनदेखा करता है।
 -help                [ false]  यह संदेश प्रिंट करें।
 -version             [ false]  संस्करण संख्या प्रिंट करें।
 -verbose             [     1]  वर्बोसिटी बदलें।
 -use_config          [  true]  कॉन्फ़िग फ़ाइल का उपयोग करें
 -grepable            [ false]  Grep के अनुकूल आउटपुट

कॉन्फ़िगरेशन फ़ाइल सिंटैक्स

Drltrace बाहरी कॉन्फ़िगरेशन फ़ाइलों का समर्थन करता है जहाँ उपयोगकर्ता बता सकता है कि drltrace को कुछ API कॉल के लिए तर्क कैसे प्रिंट करने चाहिए।

root@kitploit:~
HANDLE|CreateRemoteThread|HANDLE|SECURITY_ATTRIBUTES*|size_t|THREAD_START_ROUTINE*|VOID*|DWORD|__out DWORD*

प्रत्येक फ़ंक्शन तर्क को | द्वारा अलग किया जाना चाहिए। पहला तर्क रिटर्न प्रकार है, दूसरा तर्क स्वयं फ़ंक्शन का नाम है और बाकी फ़ंक्शन तर्क हैं। आउटपुट तर्कों को चिह्नित करने के लिए टोकन __out का उपयोग किया जाता है और इनपुट+आउटपुट तर्कों को चिह्नित करने के लिए ___inout का उपयोग किया जाता है।

मैलवेयर विश्लेषण उदाहरण

आप हमारे Wiki पृष्ठ पर जटिल मैलवेयर के विश्लेषण के लिए drltrace का उपयोग करने के उदाहरण पा सकते हैं।

लॉग विज़ुअलाइज़ेशन

लॉग फ़ाइलों के साथ काम को आसान बनाने के लिए, हमने api_calls_viz.py नामक एक स्क्रिप्ट लागू की है जिसका उपयोग RGB इमेज उत्पन्न करने के लिए किया जा सकता है जहाँ प्रत्येक पिक्सेल रंग एक अद्वितीय API कॉल का प्रतिनिधित्व करता है। उदाहरण के लिए, नीचे दी गई तस्वीर WannaCry मैलवेयर की लॉग फ़ाइल का प्रतिनिधित्व करती है।

API calls picture

तस्वीर पर बड़े हरे क्षेत्र API कॉल (wcscmp/wcsicmp) का प्रतिनिधित्व करते हैं जिनका उपयोग दिलचस्प एक्सटेंशन (जैसे docx, xls, py) वाली फ़ाइलों का चयन करने के लिए किया जाता है। बैंगनी क्षेत्र API कॉल (FindFirstFile/FindNextFile/CryptEncrypt) का प्रतिनिधित्व करते हैं जिनका उपयोग डिस्क पर फ़ाइलों और फ़ोल्डरों की गणना और एन्क्रिप्ट करने के लिए किया जाता है।

स्क्रिप्ट उत्पन्न RGB इमेज का एक HTML प्रतिनिधित्व भी उत्पन्न कर सकती है जहाँ प्रत्येक तत्व को API कॉल का नाम दिखाने के लिए चुना जा सकता है।

API calls picture

रॉ HTML फ़ाइल।

अधिक जानकारी के लिए api_calls_viz निर्देशिका देखें।

कैसे बनाएं

आप इस Wiki पृष्ठ पर एक विस्तृत मैनुअल पा सकते हैं।

OS समर्थन

विंडोज, लिनक्स (भविष्य में macOS)।

CPU आर्किटेक्चर समर्थन

x86, x64 (सूची में ARM)।

भाषाएँ

C और C++ मानक पुस्तकालय (और Python में लिखी गई लॉग हैंडलिंग स्क्रिप्ट)।

तकनीकी विवरण

हमने अपने API कॉल ट्रेसर को डायनेमिक बाइनरी इंस्ट्रुमेंटेशन फ्रेमवर्क DynamoRIO के शीर्ष पर लागू करने का निर्णय लिया। Drltrace DynamoRIO से लोडलाइब्रेरी कॉल का इंस्ट्रुमेंटेशन करने के लिए कहता है ताकि लक्ष्य प्रक्रिया द्वारा लोड की जा रही नई लाइब्रेरी को संभाल सके। जब प्रक्रिया एक नई लाइब्रेरी लोड करने का प्रयास करती है, तो DynamoRIO नियंत्रण प्रवाह को drltracelib.dll पर रीडायरेक्ट करता है। बदले में, drltrace नए लोड किए गए DLL में निर्यात किए गए फ़ंक्शनों की गणना करता है और उनमें से प्रत्येक के लिए एक विशेष कॉलबैक पंजीकृत करता है। इस प्रकार, यदि कोई निर्यात किया गया फ़ंक्शन मैलवेयर द्वारा कॉल किया जाता है, तो इस फ़ंक्शन से पहले drltrace का कॉलबैक निष्पादित किया जाएगा और उपकरण फ़ंक्शन नाम और तर्क जैसी सभी आवश्यक जानकारी लॉग करने में सक्षम होगा। निष्पादन के परिणामों को सहेजने के लिए फ़ंक्शन के बाद एक और कॉलबैक पंजीकृत किया जा सकता है।

Intel Pin क्यों नहीं? हमने निम्नलिखित कारणों से DynamoRIO का उपयोग करने का निर्णय लिया:

  1. DynamoRIO का स्रोत कोड github.com पर उपलब्ध है और BSD लाइसेंस के तहत वितरित किया जाता है, जबकि Intel Pin एक मालिकाना सॉफ़्टवेयर है।
  2. विकास के समय DynamoRIO की मूलभूत आवश्यकताओं में से एक इंस्ट्रुमेंटेड निष्पादन योग्य के प्रति पारदर्शिता थी।
  3. DynamoRIO कोड ट्रांसफॉर्मेशन पर आधारित इंस्ट्रुमेंटेशन की एक अलग तकनीक का उपयोग करता है, जबकि Intel PIN विशेष ट्रैम्पोलिन का उपयोग करता है जो विश्लेषण किए जा रहे निष्पादन योग्य के प्रति पारदर्शी नहीं है और मैलवेयर द्वारा इसका पता लगाया जा सकता है।

भविष्य का कार्य

  1. जबकि drltrace मानक एंटी-रिसर्च चालों द्वारा पता लगाने योग्य नहीं है, DBI-इंजन स्वयं इन कार्यों में दिखाए गए अनुसार पता लगाया जा सकता है 1, 2। DynamoRIO को इन चालों के प्रति प्रतिरोधी बनाना भविष्य के कार्य के लिए एक महत्वपूर्ण मार्ग है।
  2. वर्तमान में, drltrace एक रॉ लॉग प्रिंट करता है और महत्वपूर्ण स्ट्रिंग और लाइब्रेरी कॉल प्रिंट करने के लिए कई स्क्रिप्ट प्रदान करता है। भविष्य में, हम स्वचालित रूप से मैलवेयर से संकेतात्मक व्यवहार का चयन करने में सक्षम होने के लिए ह्युरिस्टिक्स (संभवतः YARA नियमों को लागू करके) जोड़ने की योजना बना रहे हैं।
  3. वर्तमान में, DynamoRIO में ARM आर्किटेक्चर का बीटा समर्थन है, ARM पर drltrace का परीक्षण और पोर्टिंग आवश्यक है।
  4. Drltrace उस स्थिति का समर्थन नहीं करता जब मैलवेयर एक दूरस्थ प्रक्रिया में कोड इंजेक्ट करता है। ऐसे मामलों में, DynamoRIO को सभी नवनिर्मित प्रक्रियाओं में drltrace इंजेक्ट करने के लिए कहना संभव है (drrun.exe का -syswide_on विकल्प)। हालांकि, भविष्य में ऐसी स्थितियों के लिए drltrace में विशेष समर्थन लागू करना आवश्यक है।

हमारा इश्यू ट्रैकर drltrace के भविष्य के बारे में अधिक विवरण शामिल करता है।

आभार

Maksim Shudrak https://github.com/mxmssh

Derek Bruening https://github.com/derekbruening

Joe Testa https://github.com/jtesta

टूल डाउनलोड करें