»Æ½ð³Ç¿Æ¼¼ÎªÁ˸üºÃµØ½øÐÐÈëÇÖ¼ì²âºÍ·ÀÓù£¬²ÎÕÕ¸÷Öֻƽð³Ç¹ÙÍøÍþв¿ò¼ÜºÍ×ÔÉíµÄʵ¼ùÓë˼¿¼£¬Ìá³öÁË»ùÓÚÈëÇÖÉúÃüÖÜÆÚµÄ¹¥»÷¹ÜÀíÄ£ÐÍ¡£×÷Ϊ»Æ½ð³ÇÐÂÒ»´ú»Æ½ð³Ç¹ÙÍø¼Ü¹¹µÄÈý´óÖ§ÖùÖ®Ò»¡£ÈëÇÖÉúÃüÖÜÆÚv1.0°ÑÈëÇÖ¹ý³Ì»®·ÖΪ7¸ö½×¶Î£ºÌ½Ë÷·¢ÏÖ¡¢ÈëÇֺ͸ÐȾ¡¢Ì½Ë÷¸ÐÖª¡¢´«²¥¡¢³Ö¾Ã»¯¡¢¹¥»÷ºÍÀûÓᢻָ´¡£ÈëÇÖÉúÃüÖÜÆÚv1.0ͬÑùÒÔATT&CK×÷Ϊ»ù±¾Õ½Êõ֪ʶ¿â£¬Æ¥Åäµ½²»Í¬µÄÈëÇֽ׶Ρ£ÐèҪעÒâµÄÊÇ£¬²¢·ÇËùÓеÄÈëÇÖ¶¼»á¾ÀúÕâ7¸ö½×¶Î£¬Ò²Ã»Óоø¶ÔµÄÏßÐÔ´ÎÐò¡£1£©Ì½Ë÷·¢ÏÖÔÚÕâ¸ö½×¶ÎÖУ¬¹¥»÷Õß»áÏÈËø¶¨¹¥»÷¶ÔÏó£¬È»ºóÀûÓÃijЩ¼¼ÊõÊֶΣ¬¾¡¿ÉÄÜ¶àµØ»ñȡĿ±ê±©Â¶³öÀ´µÄÐÅÏ¢£¬Èçͨ¹ý¶Ë¿ÚɨÃè¡¢Ö¸ÎÆÌ½²âµÈ·½Ê½£¬·¢ÏÖÃô¸Ð¶Ë¿Ú¼°°æ±¾ÐÅÏ¢£¬½ø¶øÑ°ÕÒ¹¥»÷µã£¬ÎªÏÂÒ»²½ÈëÇÖ×ö×¼±¸¡£2£©ÈëÇֺ͸ÐȾÔÚÕâ¸ö½×¶Î£¬¹¥»÷Õß»á¸ù¾Ý¡°Ì½Ë÷·¢ÏÖ¡±½×¶ÎËù·¢ÏÖµÄÖØÒªÐÅÏ¢£¬À´¶ÔÄ¿±ê±©Â¶³öµÄ¹¥»÷Ãæ½øÐй¥»÷³¢ÊÔ£¬ÔÚ¡°Ì½Ë÷·¢ÏÖ¡±½×¶ÎÊÕ¼¯µ½µÄÐÅÏ¢Ô½¶à£¬¹¥»÷¶ÔÏóËù±©Â¶µÄ¹¥»÷ÃæÒ²¾ÍÔ½¶à£¬¹¥»÷¸üÒ׳ɹ¦¡£3£©Ì½Ë÷¸ÐÖª¹¥»÷ÕßÔڳɹ¦½øÈëϵͳÄÚ²¿ºó£¬ÓÉÓÚÊÇÊ״νøÈëËùÒÔ»á³öÏÖ¶ÔÄÚ²¿»·¾³²»ÊìϤµÄÇé¿ö£¬Õâʱ¹¥»÷Õߵ͝×÷Ò»°ã»áÊǶԵ±Ç°Ëù´¦»·¾³½øÐÐ̽Ë÷£¬ÃþÇåÄÚ²¿´óÖµÄÍøÂç½á¹¹£¬³£³£°éËæ×ű»ÈëÇÖ±¾»úµÄÃô¸ÐÐÅÏ¢ÊÕ¼¯ÒÔ¼°¶ÔÄÚÍø´óÁ¿µÄ¶Ë¿Ú½øÐÐɨÃ裬ºóÐø¸ù¾Ý¹¥»÷ÕßµÄÄ¿µÄ½øÐÐÏÂÒ»²½²Ù×÷¡£4£©´«²¥Ôڴ˽׶Σ¬¹¥»÷Õ߸ù¾ÝÉÏÒ»½×¶ÎÔÚÄÚÍøÌ½Ë÷¸ÐÖªÊÕ¼¯µ½µÄÐÅÏ¢£¬Ñ¡ÔñÌØ¶¨µÄ¹¥»÷ÊÖ·¨¡£ÈçÈô·¢ÏÖÄÚ²¿ÊÇÓò»·¾³£¬¹¥»÷Õß¿ÉÄ᳢ܻÊÔÏȹ¥ÆÆÓò¿Ø·þÎñÆ÷£¬ÔÙ´«²¥ÆäËû»úÆ÷¡£ÈôÊǹ¤×÷×é»·¾³£¬¿ÉÄÜ»áÀûÓÃÊÕ¼¯µ½µÄ¶Ë¿ÚºÍ·þÎñÐÅÏ¢£¬Ñ¡ÔñÌØ¶¨Â©¶´½øÐÐÅúÁ¿É¨Ãè¹¥»÷£¬À´¾¡¿ÉÄÜ¶àµØ¼ÌÐø»ñµÃÆäËû¼ÆËã»úµÄ¿ØÖÆÈ¨¡£5£©³Ö¾Ã»¯¹¥»÷ÕßÔÚ¶Ô×ʲú½øÐжñÒâ²Ù×÷ºó£¬ÎªÁËÄܹ»¼õÉÙÔÙ´ÎÁ¬½ÓµÄ¹¥»÷³É±¾£¬·½±ãÏ´νøÈ룬»á½øÐС°ÁôºóÃÅ¡±µÄ²Ù×÷£¬³£¼ûµÄºóÃÅÈ磺½¨Á¢¼Æ»®ÈÎÎñ£¬¶¨Ê±Á¬½ÓÔ¶³Ì·þÎñÆ÷£»ÉèÖÿª»úÆô¶¯³ÌÐò£¬ÔÚÿ´Î¿ª»úʱ´¥·¢Ö´ÐÐÌØ¶¨¶ñÒâ³ÌÐò£»Ð½¨ÏµÍ³¹ÜÀíÔ±Õ˺ŵȡ£ÕâÑù±ãÓÚ¹¥»÷ÕßÏ´οìËٵǼ²¢¿ØÖƸÃϵͳ¡£6£©¹¥»÷ºÍÀûÓù¥»÷ÕßÔڴ˽׶αã»á¿ªÊ¼¶ÔÄ¿±ê×ʲú½øÐжñÒâ²Ù×÷£¬°´ÕÕ¹¥»÷ÕßÒâÔ¸£¬¶ÔÄÜÀûÓõÄÊý¾Ý½øÐÐÇÔÈ¡¡¢ÀûÓã»¶Ô²Ù×÷ϵͳ¡¢Ãô¸ÐÎļþ½øÐÐÆÆ»µ¡¢É¾³ý¡£ËùÓеķÀÓùÊֶζ¼Ó¦¸Ã¼«Á¦×èÖ¹¹¥»÷Õß½øÐе½ÕâÒ»½×¶Î¡£ 7£©»Ö¸´
¹¥»÷ÕßÔÚÖ´ÐÐËùÓеĹ¥»÷²Ù×÷ʱ£¬ÍùÍù»áÔÚϵͳÉÏÁôÏ´óÁ¿µÄÐÐΪÈÕÖ¾£¬Òò´ËÔÚÕâÒ»½×¶Î£¬¹¥»÷Õß»á¶Ô¼Ç¼×ÔÉíºÛ¼£µÄËùÓÐÈÕÖ¾½øÐд¦Àí£¬»òɾ³ý»ò»ìÏý£¬´Ó¶øÏûÃðÖ¤¾Ý£¬ÌÓ±Ü×·×Ù¡£
±¾ÏµÁÐÎÄÕ»ùÓڻƽð³Ç¿Æ¼¼ÈëÇÖÉúÃüÖÜÆÚ1.0¼Ü¹¹£¬Ï¸·Ö¸ö½×¶Î¹¥»÷Õߵij£Óù¥»÷ÊֶΣ¬²¢¶ÔÏà¹Ø¹¥»÷ÊֶεľßÌåʵʩ·½Ê½½øÐÐÖðÒ»ÆÊÎö£¬Îª»Æ½ð³Ç¹ÙÍø·ÀÓù½¨ÉèÌṩÓÐÁ¦ÖªÊ¶²¹³äºÍ·´ÖÆ×¼±¸¡£
LD_PRELOAD½Ù³Ö¹¥»÷
ÈëÇֺ͸ÐȾ¡¢¹¥»÷ºÍÀûÓÃ
LD_PRELOAD±¾ÉíÊÇÔÚLinuxÖеÄÒ»¸ö»·¾³±äÁ¿£¬ÓÃÓÚÖ¸¶¨¶¯Ì¬¿âµÄ¼ÓÔØµØÖ·¡£ÔÚLinux³ÌÐòÖУ¬Ò»¸ö³ÌÐòµ÷ÓÃʱ¶¯Ì¬¿âµÄ¼ÓÔØÓÅÏȼ¶×î¸ß£¬µ±LD_PRELOAD±äÁ¿Ö¸¶¨µÄµØÖ·Îª¶ñÒâÁ´½Ó¿âʱ£¬Ôò¸ÃÁ´½Ó¿â»á±»µ÷Óò¢Ö´ÐУ¬´Ó¶øÔì³ÉΣº¦¡£¸Ã¹¥»÷²»½ö»áÔÚÈëÇֺ͸ÐȾ½×¶Î±»ºÚ¿ÍÀûÓã¬Ò²¿ÉÄÜ·¢ÉúÔÚ¹¥»÷ºÍÀûÓý׶Ρ£ÀûÓÃÕâÒ»µã£¬Ôںڿ͹¥Èë·þÎñÆ÷ºó£¬ÍùÍù»áÖ´ÐÐijЩ¶ñÒâ³ÌÐò£¬µ±·þÎñÆ÷ÉÏ´æÔڻƽð³Ç¹ÙÍøÖն˵Äʱºò£¬Ö±½ÓÖ´ÐжñÒâ³ÌÐò´æÔÚ±»¼ì²âµ½µÄ·çÏÕ£¬Í¨¹ýLD_PRELOADʵÏÖ¶ñÒâ´úÂë×¢Èëµ½ÌØ¶¨Õý³£½ø³ÌÖУ¬¿ÉÒÔʵÏֻƽð³Ç¹ÙÍøÌÓÒݲ¢Ö´ÐÐÈÎÒâÃüÁî¡£´Ó¹¥»÷ÐÐΪÁ´ÌõµÄÉÏÏÂÎÄÀ´¿´£¬Õë¶ÔLD_PRELOAD½Ù³ÖµÄÐÐΪÁ´ÌõÊäÈëÊä³öÈçÏ£ºÊäÈ룺Êܺ¦ÕߵǼƾ֤¡¢LD_PRELOAD»·¾³±äÁ¿¡¢¶ñÒâÁ´½Ó¿âµÄ±¾µØ±£´æµØÖ·Êä³ö£ºÖ´ÐеĶñÒâÁ´½Ó¿â£¬¸ù¾ÝÁ´½Ó¿âµÄÄ¿µÄ²»Í¬£¨¿ÉÄÜÔ¶³ÌÁ¬½Ó·þÎñÆ÷¡¢ÏÂÔØÎļþ¡¢Ö´ÐÐÎļþµÈ£©
³£ÓõÄLD_PRELOAD½Ù³Ö¹¥»÷Á÷³ÌÈçÏ£º
LD_PRELOAD±¾ÉíÊÇÒ»¸ö»·¾³±äÁ¿£¬ÓÃÓÚÖ¸¶¨¶¯Ì¬¿âµÄ¼ÓÔØµØÖ·£¬Ò»¸ö³ÌÐòµ÷ÓÃʱ¶¯Ì¬¿âµÄ¼ÓÔØÓÅÏȼ¶×î¸ß£¬Ò»°ãÇé¿öÏ£¬Æä¼ÓÔØË³ÐòΪ
LD_PRELOAD > LD_LIBRARY_PATH >/etc/ld.so.cache > lib > /usr/lib
³ÌÐòµÄÁ´½Ó·ÖΪ¾²Ì¬Á´½ÓºÍ¶¯Ì¬Á´½Ó£¬¾²Ì¬Á´½Ó¾ÍÊǰÑËùÓÐËùÒýÓõĺ¯Êý»ò±äÁ¿È«²¿µØ±àÒëµ½¿ÉÖ´ÐÐÎļþÖС£¶¯Ì¬Á´½ÓÔò²»»á°Ñº¯Êý±àÒëµ½¿ÉÖ´ÐÐÎļþÖУ¬¶øÊÇÔÚ³ÌÐòÔËÐÐʱ¶¯Ì¬µÄÔØÈ뺯Êý¿â£¬Ò²¾ÍÊÇÔËÐÐÁ´½Ó¡£Òò´Ë£¬¶ÔÓÚ¶¯Ì¬Á´½Ó£¬±ØÈ»´æÔÚÒ»¸ö¶¯Ì¬Á´½Ó¿â¡£
¶¯Ì¬Á´½Ó¿âµÄºÃ´¦ÔÚÓÚÒ»µ©¶¯Ì¬¿âµÄº¯Êý·¢Éú±ä»¯£¬¶ÔÓÚ¿ÉÖ´ÐгÌÐòÀ´ËµÊÇ͸Ã÷µÄ£¬¿ÉÖ´ÐгÌÐòÎÞÐèÖØÐ±àÒë¡£¶ø¶ÔÓÚ¾²Ì¬Á´½ÓµÄ³ÌÐòÀ´Ëµ£¬º¯Êý¿âÖÐÒ»¸öССµÄ¸Ä¶¯ÐèÒªÕû¸ö³ÌÐòµÄÖØÐ±àÒë¡¢·¢²¼¡£
¶ÔÓÚlinux,ʹÓõÄÊÇglibc£¬ÓÐÒ»¸ö½Ðlibc.so.6µÄÎļþ£¬¼¸ºõËùÓÐlinuxÏÂÃüÁî¾ù»áʹÓøö¯Ì¬Á´½Ó¿â£¬ÆäÖÐÓбê×¼CµÄ¸÷ÖÖ»ù±¾º¯Êý£¬¶ÔÓÚgcc¶øÑÔ£¬Ä¬ÈÏÇé¿öÏ£¬Ëù±àÒëµÄ³ÌÐò¶¼ÊǶԱê×¼Cº¯ÊýµÄÁ´½Ó£¬¶¼ÊÇͨ¹ý¶¯Ì¬Á´½Ó·½Ê½À´Á´½Ólibc.so.6Õâ¸öº¯Êý¿â¡£
ÕâÀïÎÒÃÇͨ¹ý±àÒë²âÊÔÎļþ½øÐÐÑÝʾ
Random.cÎļþ£¬Ä£ÄâÕý³£µÄÓ¦ÓóÌÐòÎļþ£¬ÄÚÈÝÈçÏ£º
#include
#include
#include
int main(){
srand(time(NULL));
int i = 10;
while(i--)printf("%d
",rand()%100);
return 0;
}
gcc -o random random.c
±àÒëÉú³É¿ÉÖ´ÐÐÎļþrandom£¬¸ÃÎļþÉú³ÉËæ»ú10¸öÊý×Ö¡£

ldd²é¿´´Ëʱ¸Ã³ÌÐòµÄÁ´½Ó¿â

ÕâʱºòÎÒÃÇ×Ô¼ºÖØÐÂ×Ô¶¨ÒåÒ»¸örandº¯Êý
unrandom.c
int rand(){
return 66;
}
Éú³ÉÁ´½Ó¿â
gcc -shared -fPIC unrandom.c -o unrandom.so
½«Á´½Ó¿âͨ¹ýexportÃüÁîдÈëLD_PRELOAD±äÁ¿£¬ÔÙ´ÎÖ´Ðв¢²é¿´Á´½Ó¿â£¬´Ëʱ×Ô±àÒëµÄunrandom.soÁ´½Ó¿âÒѾ³É¹¦Ö´ÐУ¬

µ±È¡Ïû¸Ã»·¾³±äÁ¿Ê±
unset LD_PRELOAD

Ò»ÇÐÕý³£¡£
µ±unrandom.soΪ¶ñÒâÁ´½Ó¿âʱ£¬Ôò»áÖ´ÐÐÏà¹Ø¶ñÒâ´úÂë¡£Òò´ËºÜ¶à²¡¶¾³ÌÐòͨ¹ýÕâÖÖ·½·¨£¬Òþ²Ø×ÔÉíÒÔ¶ã±Ü»Æ½ð³Ç¹ÙÍø¼ì²â¡£
ÔÚ/etc/ld.so.preload ÎļþÖÐÒ²¿É¿´µ½Ô¤ÏȼÓÔØµÄ¶¯Ì¬Á´½Ó¿â¡£