The received signal is an ultrasonic wave 40kHz. Currently my analogRead() is about 6us, which us about 166kHz. This sampling rate is not really ok for me, cause I need a high precision for my project.
I'm not sure I follow you on this, for two reasons.
Firstly, if you are trying to capture the 40KHz carrier, then sampling at 80KHz will allow you to fully reconstruct the waveform (as per Nyquist, Shannon et al). You say you can sample at 166KHz which is double what you need. (Admittedly this may not leave you much time for any processing but that is another story.)
Secondly, you probably want to look at the modulated signal rather than the carrier. Typical uses of ultrasonic devices are motion detection and the like where the modulation is at a much lower frequency than the carrier. Here you have 2 options: firstly sample at twice the highest modulated frequency you are interested (and yes there may be some distortion from the carrier in this case but in this situation Nyquist is helping you). Alternatively you can demodulate the signal before you try to sample it - depending on the modulation used this can be trivial or a little more complex - and again sample the result at twice the maximum modulation frequency.
The advantage of the 2nd approach is to give you a lot more processing time to do something with the samples.
Trying to sample faster will not add precision to your result - only more samples that you need to process.